gpt4 book ai didi

python - 使用 StringVar 的跟踪条目对标签没有影响

转载 作者:太空宇宙 更新时间:2023-11-04 04:45:57 25 4
gpt4 key购买 nike

学习使用 Tkinter 并遵循在线教程。这是一个输入文本的示例,然后标签将根据输入的文本字段进行相应更新。

我正在 Mac 和 Raspberry Pi 上的 Python3 中尝试它,但我没有看到跟踪的效果,因此标签没有被条目修改。任何帮助将不胜感激(或任何其他如何一起使用 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()

最佳答案

问题是您正在为 a_var 使用局部变量,并且在 Mac 上它正在被垃圾收集。保存对变量的引用(例如: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 来链接它们:

self.entry = Entry(frame, textvariable=self.a_var)
self.label = Label(frame, textvariable=self.a_var)

关于python - 使用 StringVar 的跟踪条目对标签没有影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49619685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com