Ссылка на ярлык внутри рамки - PullRequest
0 голосов
/ 21 января 2020

Привет. Вот мой код:

import tkinter as tk

class Window(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)
        container = tk.Frame(self)
        container.pack(side="top", fill="both", expand = True)
        label1 = tk.Label(container, text="label")
        label1.pack()

app = Window()

print (app.label1.text)

app.mainloop()

Я просто пытаюсь извлечь текст из виджета с надписью и распечатать его. Когда я запускаю этот код, я получаю это сообщение об ошибке:

AttributeError: у объекта '_tkinter.tkapp' нет атрибута 'label1'

Я довольно новичок в Tkinter, но что я делаю не так?

1 Ответ

2 голосов
/ 21 января 2020

Ваш ярлык не определен как атрибут класса. Для этого добавьте префикс self..

В настоящее время ваша метка является просто локальной переменной для __init__. Локальные переменные не могут быть доступны из чего-либо вне функции / метода. Вам нужно определить метку как атрибут класса, чтобы к ней можно было обращаться извне функции / метода.

Измените это:

label1 = tk.Label(container, text="label")
label1.pack()

На это:

self.label1 = tk.Label(container, text="label")
self.label1.pack()

Вам также потребуется изменить app.label1.text на app.label1['text'], чтобы заставить работать ваше заявление на печать .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...