Помог, что текстовая переменная ttk Label не может отображаться в классе должным образом - PullRequest
0 голосов
/ 13 февраля 2020

Я совершенно новичок ie из 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()

В мои коды я добавляю отпечаток, и он может хорошо печатать текст. Однако текст не может отображаться, и нет никаких сообщений об ошибках. Мне нужен кто-то, чтобы помочь в этом вопросе. Заранее большое спасибо.

1 Ответ

0 голосов
/ 14 февраля 2020

У вас нет ссылки, поэтому экземпляр new_label, поэтому python сборщик мусора собирает его. Виджеты ttk особенно чувствительны к использованию сборщиков мусора StringVar.

Простое решение - сохранить ссылку на ваш экземпляр new_label:

x = new_label(f)
...