某些小部件 (如文本输入小部件) 的当前值设置可以通过使用特殊选项直接连接到应用程序变量。这些选项包括variable、textvariable、onvalue、offvalue和值。这种连接是双向的: 如果变量因任何原因而改变,它所连接的小部件将被更新以反映新的值。
不幸的是,在tkinter的当前实现中,不可能通过变量或textvariable选项将任意Python变量移交给小部件。唯一可行的变量是从tkinter中定义的名为Variable的类中子类化的变量。
已经定义了许多有用的变量子类: StringVar、IntVar、DoubleVar和BooleanVar。要读取此类变量的当前值,请对其调用get() 方法,并更改其值,然后调用set() 方法。如果您遵循此协议,小部件将始终跟踪变量的值,而无需您进一步干预。
例如:
class App(tk.Frame):def __init__(self, master):super().__init__(master)self.pack()self.entrythingy = tk.Entry()self.entrythingy.pack()# Create the application variable.self.contents = tk.StringVar()# Set it to some value.self.contents.set("this is a variable")# Tell the entry widget to watch this variable.self.entrythingy["textvariable"] = self.contents# Define a callback for when the user hits return.# It prints the current value of the variable.self.entrythingy.bind('<Key-Return>',self.print_contents)def print_contents(self, event):print("Hi. The current entry content is:",self.contents.get())root = tk.Tk()myapp = App(root)myapp.mainloop()
**
