Как активировать текстовые поля tkinter через l oop в tkinter python? - PullRequest
0 голосов
/ 13 июля 2020

У меня есть 20 текстовых полей, которые я создал с помощью tkinter- Python, как показано ниже:

введите описание изображения здесь

Теперь у меня есть список y1 []

Если количество элементов в y1 = 6, 6 текстовых полей должны быть активированы

Если количество элементов в y1 = 3, Должны быть активированы 3 текстовых поля

Как мне это сделать?

Вот что я пробовал до сих пор:

 if len(y1) <= 10:
   i = 0
   for i in range(len(y1)):
    if i == 1:
      txtbox1.config(state=NORMAL)       
      txtbox1.insert(0, y[0])     
     if i == 2:
      txtbox2.config(state=NORMAL)
      txtbox2.insert(0, y[0])
     if i == 3:
      txtbox3.config(state=NORMAL)
      txtbox3.insert(0, y[0])
     if i == 4:
      txtbox4.config(state=NORMAL)
      txtbox4.insert(0, y[0])
     if i == 5:
      txtbox5.config(state=NORMAL)
      txtbox5.insert(0, y[0])
     if i == 6:
      txtbox6.config(state=NORMAL)
      txtbox6.insert(0, y[0])
     if i == 7:
      txtbox7.config(state=NORMAL)
      txtbox7.insert(0, y[0])
     if i == 8:
      txtbox8.config(state=NORMAL)
      txtbox8.insert(0, y[0])
     if i == 9:
      txtbox9.config(state=NORMAL)
      txtbox9.insert(0, y[0])
     if i == 10:
      txtbox10.config(state=NORMAL)
      txtbox10.insert(0, y[0])
     i = i + 1     
    

1 Ответ

2 голосов
/ 13 июля 2020

Сохраните текстовые поля в массиве, а затем выполните итерацию по массиву, чтобы включить / отключить указанное c количество текстовых полей.

import tkinter as tk
import random

N = 20
activated_text_boxes = random.randint(0, N)

window = tk.Tk()

text_boxes = [tk.Text(window, height=1, width=300) for i in range(N)]

for idx, tb in enumerate(text_boxes):
    tb.pack()
    print(tb)
    if idx < activated_text_boxes:
        print("normal")
        tb["bg"] = "blue"
        tb["state"] = "normal"
    else:
        print("disabled")
        tb["bg"] = "red"
        tb["state"] = "disabled"

window.mainloop()
...