UnboundLocalError: local variable 'x' referenced before assignment
При нажатии на кнопку печатается ошибка. (python3)
UnboundLocalError: local variable 'uni' referenced before assignment
Помогите. Вот мой код:
from tkinter import *
from os import *
root = Tk()
root.title("changer")
root.geometry("800x450")
unim = "changes"
global uni
uni = 1
def click1():
if uni == 1:
unim = "unit not ok"
uni = 2
elif uni == 2:
unim = "unit ok"
uni = 1
else:
uni = 1
app = Frame(root)
app.grid()
btn = Button(text="Change message", command=click1)
btn.grid()
lbl = Label(app, text = unim)
lbl.grid()
root.mainloop()
quit()
Ответы (1 шт):
В тексте ошибки, сказано, что вы пытаетесь работать с переменной, до того, как объявили ее. Это потому что функция пытается работать с локальной переменной uni, которой по сути внутри функции не существует.
Это тоже самое, что написать такой код:
a = a + 10
print(a)
Интерпретатор не знает переменной a, к которой вы пытаетесь прибавить 10, да еще и вывести на экран, поэтому выдаст ту же самую ошибку.
Чтобы избавиться от проблемы, нужно указать функции на то, что с переменной uni нужно работать как с глобальной переменной, которая будет меняться за пределами функции во всем коде.
Именно поэтому непонятно для чего вы написали global uni за переделами функции, в то время, как указатель на глобальную переменную нужно размещать в теле функции
Если хочется узнать что-то еще, подробнее можно почитать здесь.