学习使用Tkinter并遵循在线教程。这是一个给出文本的示例,然后标签将相应地更新为输入文本字段。 我在Mac上和Raspberry Pi上的Python3中尝试它并且我没有看到跟踪的效果,因此标签不会被Entry修改。任何帮助将是欣赏(或任何其他简单的如何一起使用Entry和Trace的例子)
感谢。
from tkinter import *
class HelloWorld:
def __init__(self, master):
frame = Frame(master)
frame.pack()
self.button = Button(
frame, text="Hello", command=self.button_pressed
)
self.button.pack(side=LEFT, padx=5)
self.label = Label(frame, text="This is a label")
self.label.pack()
a_var = StringVar()
a_var.trace("w", self.var_changed)
self.entry = Entry(frame,textvariable=a_var)
self.entry.pack()
def button_pressed(self):
self.label.config(text="I've been pressed!")
def var_changed(self, a, b, c):
self.label.config(text=self.entry.get())
def main():
root = Tk()
root.geometry("250x150+300+300")
ex = HelloWorld(root)
root.mainloop()
if __name__ == '__main__':
main()
答案 0 :(得分:1)
问题是你正在为memcpy()
使用局部变量,而在Mac上它正在被垃圾收集。保存对变量的引用(例如:a_var
而不仅仅是self.a_var
)。
a_var
注意:如果你想要的是保持标签和条目同步,你就不需要使用跟踪。您可以通过为它们提供相同的 self.a_var = StringVar()
self.a_var.trace("w", self.var_changed)
self.entry = Entry(frame,textvariable=self.a_var)
self.entry.pack()
:
textvariable