【问题标题】:Wired that ttk Label textvariable can't be displayed in class properly连线 ttk Label textvariable 无法在类中正确显示
【发布时间】:2020-02-13 18:30:20
【问题描述】:

我完全是 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()

在我的代码中,我添加了一个打印,它可以很好地打印文本。但是文本无法显示出来,也没有任何错误消息。我确实需要有人来帮助解决这个问题。 非常感谢您。

【问题讨论】:

    标签: python-3.x tkinter label ttk


    【解决方案1】:

    您没有保留引用,所以 new_label 的实例,所以 python garbage collector 正在收集它。 ttk 小部件对垃圾收集的StringVar 实例的使用特别敏感。

    简单的解决方案是保留对new_label 实例的引用:

    x = new_label(f)
    

    【讨论】:

    • 嗨,布莱恩,感谢您的回复。在学习之初了解python垃圾收集器对我来说真的很棒。你的解决方案是可行的。你的帮助太棒了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    相关资源
    最近更新 更多