Как включить несколько Entrybox с несколькими CheckButton? - PullRequest
0 голосов
/ 09 октября 2019

Я пытаюсь связать каждую отдельную кнопку-флажок с конкретным полем ввода, используя функцию. но я понятия не имею, как назвать каждую отдельную кнопку. кодирование для меня ново, и мне отчаянно нужна помощь ...

попытался использовать функцию, найденную в сети, но только последние поля ввода влияют на кнопки

from tkinter import *

#initialise intial window, root
root = Tk()

dishes = Text(root, cursor="arrow")

qty = Text(root, cursor="arrow")

dishes.pack(side=RIGHT)
qty.pack(side=LEFT)


#to display a entrybox each row
for i in range(10):

    ent = Entry(root, width=3, state='disabled')
    qty.window_create("100.0", window=ent)
    qty.insert("end", "\n")

##to display a checkbutton each row
for key in range(10):

    var = IntVar(value=0)
    cb = Checkbutton(dishes, text="%d" % key,
                     variable=var, onvalue=1, offvalue=0)
    dishes.window_create("end", window=cb)
    dishes.insert("end", "\n")

root.mainloop()

1 Ответ

1 голос
/ 09 октября 2019

Вы можете сохранить записи и переменные в массиве и ссылаться на них с помощью индекса, предполагая, что между записью и кнопкой выбора есть отношение 1: 1.

Для записей:

entries = []
for i in range(10):
    ent = Entry(root, width=3, state='disabled')
    entries.append(ent)
    ...

Для переменных контрольной кнопки:

vars = []
for key in range(10):
    var = IntVar(value=0)
    vars.append(var)
    cb = Checkbutton(..., command=lambda i=key: set_state(i))
    ...

Для команды для изменения состояния:

def set_state(i):
    new_state = "disabled" if vars[i].get() == 0 else "normal"
    entries[i].configure(state=new_state)
...