change_label当全局变量a改变其值时如何调用函数?我试图change_variable模拟变量的实际变化(单击按钮时变量会发生变化)。
from tkinter import *
a = 3
class Application(Frame):
def __init__(self, master):
Frame.__init__(self, master)
self.master = master
self.button = Button(self.master, text='Change Variable', command=self.change_variable)
self.button.grid(row=0)
self.label = Label(self.master, text='Test')
self.label.grid(row=1)
def change_label(self):
self.label.config(bg='Red', fg='Yellow')
def change_variable(self):
global a
a = 1
def main():
root = Tk()
Application(root)
root.mainloop()
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
如果您使用 tkinter 特殊变量之一(StringVar等),您可以添加一个“跟踪”,每当设置或取消设置该变量时,该“跟踪”都会触发回调。
例如:
class Application(Frame):
def __init__(self, master):
Frame.__init__(self, master)
...
self.a = tk.IntVar(value=3)
self.a.trace("w", self.change_label)
...
def change_label(self, *args):
self.label.config(bg='Red', fg='Yellow')
def change_variable(self):
self.a.set(1)
Run Code Online (Sandbox Code Playgroud)
self.a这样,每当您通过方法设置 的值时set,与 绑定的函数trace就会被调用。
任何使用该变量的小部件也将被更新。例如,将标签更改为:
self.label = tk.Label(self.master, textvariable=self.a)
Run Code Online (Sandbox Code Playgroud)
单击该按钮时,请注意标签会发生变化以反映更改。
有关传递给跟踪函数的参数的描述,请参阅Tkinter 变量跟踪方法回调的参数是什么?
这些变量在这里有很好的描述:变量类(BooleanVar、DoubleVar、IntVar、StringVar)