Я хочу создать приложение tkinter с несколькими виджетами ввода.Я использую циклы for для создания виджетов, их упаковки и т. Д. Наконец, я хочу использовать метод трассировки tkinter для проверки ввода пользователя для каждого из виджетов ввода.Как связать одну и ту же функцию обратного вызова с несколькими переменными tkinter, используя цикл for?Я знаю, что метод trace предоставит функции обратного вызова три аргумента name, index и mode.Например, есть ли способ использовать аргумент имени как уникальный идентификатор для каждой переменной в этом цикле for?
Это мой код:
import tkinter as tk
class EntryFormular(tk.Frame):
def __init__(self,master):
tk.Frame.__init__(self,master)
self.entrylist = [
"entry 1",
"entry 2",
"entry 3"
]
self.inputvars = list()
self.build()
def build(self):
for entry in self.entrylist:
var = tk.StringVar(self.master)
var.trace("w",self.validateFloatInput)
element = tk.Entry(self,textvariable=var)
element.pack()
self.inputvars.append(var)
def validateFloatInput(self,name,index,mode):
# bind this method to all 3 entry widgets
# get variable content using .get() method
# only allow float inputs between 0 and 1, such as 1.0 or 0.85
pass
class Application:
def __init__(self, master):
self.master = master
self.entryformular = EntryFormular(master)
self.entryformular.pack()
if __name__ == "__main__":
root = tk.Tk()
my_gui = Application(root)
root.mainloop()