有线 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)