Ярлык не определен

Что здесь не так, помогите пожалуйста. Пишет lbl1 не определен. Я уже определил, что это неправильный заказ, как мне его отремонтировать? Каждый день у меня такая проблема, не могли бы вы мне помочь ???

import tkinter

window = tkinter.Tk()

window.title("Calculator 2")

window.geometry("400x400")




def func1():
    lbl1 = tkinter.Label(window, text = "1")
    lbl1.pack()

def func2():
    lbl2 = tkinter.Label(window, text = "+")
    lbl2.pack()
def func3():
    lbl3 = tkinter.Label(window, text = "2")
    lbl3.pack()



btn1 = tkinter.Button(window, text = "1", command=func1)
btn2 = tkinter.Button(window, text = "+", command=func2)
btn3 = tkinter.Button(window, text = "2", command=func3)
btn1.pack()
btn2.pack()
btn3.pack()

def funclst():
    if lbl1 == "1" and  lbl2 == "+" and lbl3 == "2":
        rstt = tkinter.Label(window, text=(int(lbl1) + int(lbl3)))
        rstt.pack()

lst = tkinter.Button(window, text = "Calculate", command=funclst)
lst.pack()







window.mainloop()

Пожалуйста, включите трассировку ошибки полный, а не просто цитируйте приблизительно сообщение об ошибке.

Thierry Lathuille 17.11.2018 13:11
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
812
1

Ответы 1

Вы создаете метки внутри функций. Когда функция завершается, имена, присвоенные меткам, собираются сборщиком мусора. Позже, когда вы попытаетесь получить доступ к переменным в операторе if, они не определены в глобальной области.

Также; Операторы if проверяют, является ли lbl1 == "1", который не будет работать как lbl1, ссылкой на этикетку, а не на текст внутри этикетки. Доступ к тексту можно получить через lbl1['text'] или lbl1.cget("text").

Другие вопросы по теме