Ama*_*rok 4 python tkinter widget
我的tkinter应用程序有几个控件,我想知道它们何时发生任何更改,以便我可以更新应用程序的其他部分.
有没有什么我可以做的没有写一个更新程序功能,并在最后循环:
root.after(0, updaterfunction)
Run Code Online (Sandbox Code Playgroud)
这种方法过去一直有效,但我担心如果有很多事情要检查它可能会很昂贵.
即使我确实使用了这种方法,我是否可以通过仅更新具有已更改变量的项目来节省资源?如果是这样,请分享如何,因为我不确定如何检测更新功能之外的特定更改.
许多tkinter控件可以与变量相关联.对于那些你可以对变量进行跟踪,以便在变量发生变化时调用某些函数.
有关变量跟踪的更多信息,请参见http://effbot.org/tkinterbook/variable.htm.它们是tk众多伟大,新颖的特征之一.
小智 5
要在进行选择时触发事件,请设置 OptionMenu 的命令选项
前任。
def OptionMenu_SelectionEvent(event): # I'm not sure on the arguments here, it works though
## do something
pass
var = StringVar()
var.set("one")
options = ["one", "two", "three"]
OptionMenu(frame, var, *(options), command = OptionMenu_SelectionEvent).pack()
Run Code Online (Sandbox Code Playgroud)
如果您使用 Tkinter Variable 类StringVar()将变量存储在 TkinterOptionMenu或 中Checkbutton,则可以使用它的trace()方法。
trace(),基本上,在读取或写入变量时监视变量。
该trace()方法采用 2 个参数 -mode和function callback。
trace(mode, callback)
这是它的使用方式 -
def callback(*args):
print("variable changed!")
var = StringVar()
var.trace("w", callback)
var.set("hello")
Run Code Online (Sandbox Code Playgroud)
来源:http : //effbot.org/tkinterbook/variable.htm