有线 ttk 标签文本变量无法在 class 中正确显示
Wired that ttk Label textvariable can't be displayed in class properly
我完全是 Python 的新手。但是我必须使用 python 3 来做一些项目。我真的对 ttk.Label 和 textvariable 感到困惑。以下是我的代码。
from tkinter import *
from tkinter import ttk
class new_label:
def __init__(self, master):
self.master = master
self.label_var = StringVar()
ttk.Label(self.master, text="iii").grid(row=0, sticky = "w")
self.create_label()
def create_label(self):
self.l1 = ttk.Label(f,
textvariable = self.label_var,
foreground = "red",)
self.l1.grid(row=1)
self.label_var.set("First Label")
print(self.l1.cget("text"))
r=Tk()
r.title("My Label Update")
f=ttk.Frame(r)
f.grid(row=0)
new_label(f)
r.mainloop()
在我的代码中,我添加了打印,它可以很好地打印文本。但是文本无法显示出来,也没有任何错误消息。我确实需要有人帮助解决这个问题。
非常感谢您。
您没有保留 new_label
实例的引用,因此 python garbage collector 正在收集它。 ttk 小部件对垃圾收集的 StringVar
实例的使用特别敏感。
简单的解决方案是保留对 new_label
:
实例的引用
x = new_label(f)
我完全是 Python 的新手。但是我必须使用 python 3 来做一些项目。我真的对 ttk.Label 和 textvariable 感到困惑。以下是我的代码。
from tkinter import *
from tkinter import ttk
class new_label:
def __init__(self, master):
self.master = master
self.label_var = StringVar()
ttk.Label(self.master, text="iii").grid(row=0, sticky = "w")
self.create_label()
def create_label(self):
self.l1 = ttk.Label(f,
textvariable = self.label_var,
foreground = "red",)
self.l1.grid(row=1)
self.label_var.set("First Label")
print(self.l1.cget("text"))
r=Tk()
r.title("My Label Update")
f=ttk.Frame(r)
f.grid(row=0)
new_label(f)
r.mainloop()
在我的代码中,我添加了打印,它可以很好地打印文本。但是文本无法显示出来,也没有任何错误消息。我确实需要有人帮助解决这个问题。 非常感谢您。
您没有保留 new_label
实例的引用,因此 python garbage collector 正在收集它。 ttk 小部件对垃圾收集的 StringVar
实例的使用特别敏感。
简单的解决方案是保留对 new_label
:
x = new_label(f)