tkinter Entry validatecommand 无法调用 Entry.config()
tkinter Entry validatecommand cannot call Entry.config()
在 Python 3.6.6 中,我想在修改另一个 Entry 小部件时配置一个 tkinter Entry 小部件。入口小部件没有回调函数,但它们有验证命令,如果验证='focus',它可以以相同的方式工作。但是,解释器无法识别 validatecommand 函数中要修改的 Entry 小部件。这是我的最小示例:
import tkinter as tk
class app:
def __init__(self,window):
self.root = window
self.tv1 = tk.DoubleVar(None,2)
self.tv2 = tk.DoubleVar(None,3)
self.tv3 = tk.DoubleVar(None,0)
self.entry1 = tk.Entry(self.root, textvariable=self.tv1,
validate='focus', validatecommand=self.valid)
self.entry2 = tk.Entry(self.root, textvariable=self.tv2,
validate='focus', validatecommand=self.valid)
self.label1 = tk.Label(self.root, textvariable=self.tv3)
self.entry1.pack()
self.entry2.pack()
self.label1.pack()
def valid(self):
self.tv3.set(self.tv1.get()*self.tv2.get())
self.label1.config(fg='red')
return True
main = tk.Tk()
win = app(main)
main.mainloop()
哪个returns
AttributeError: 'app' object has no attribute 'label1'
这显然不是真的。
在创建标签之前第一次调用验证命令。
您可以通过在创建条目小部件之前创建标签来解决此问题。
在 Python 3.6.6 中,我想在修改另一个 Entry 小部件时配置一个 tkinter Entry 小部件。入口小部件没有回调函数,但它们有验证命令,如果验证='focus',它可以以相同的方式工作。但是,解释器无法识别 validatecommand 函数中要修改的 Entry 小部件。这是我的最小示例:
import tkinter as tk
class app:
def __init__(self,window):
self.root = window
self.tv1 = tk.DoubleVar(None,2)
self.tv2 = tk.DoubleVar(None,3)
self.tv3 = tk.DoubleVar(None,0)
self.entry1 = tk.Entry(self.root, textvariable=self.tv1,
validate='focus', validatecommand=self.valid)
self.entry2 = tk.Entry(self.root, textvariable=self.tv2,
validate='focus', validatecommand=self.valid)
self.label1 = tk.Label(self.root, textvariable=self.tv3)
self.entry1.pack()
self.entry2.pack()
self.label1.pack()
def valid(self):
self.tv3.set(self.tv1.get()*self.tv2.get())
self.label1.config(fg='red')
return True
main = tk.Tk()
win = app(main)
main.mainloop()
哪个returns
AttributeError: 'app' object has no attribute 'label1'
这显然不是真的。
在创建标签之前第一次调用验证命令。
您可以通过在创建条目小部件之前创建标签来解决此问题。