#python #python-3.x #tkinter
Вопрос:
Я только начал изучать python и tkinter, и во время разработки простой программы я получаю UnboundLocalError: local variable 'Label' referenced before assignment
, нажимая Team
кнопку. Individual
кнопка работает по плану.
Я не понимаю, как решить эту проблему. Мой код:
Label = Label(root, text = "How many members in your team")
Label.grid(row = 0, column = 0, columnspan = 2,padx = 20,pady = 20)
Комментарии:
1. В строке
Label = Label(root, text = "Entering as team or individual")
, что находитсяLabel
на RHS=
знака?2. изменить
Label = Label(...)
наmy_label = Label(...)
3. @RitwikG
Label
— это класс tkinter, импортированный в линию:from tkinter import *
4. Хорошо. Я думаю, что ошибка может быть, так как он изменяет
Label
переменную в качестве возвращаемого значенияLabel(root, text = "Entering as team or individual")
. @TheLizzard, как вы предложили, внесение изменений должно решить проблему. @Student в любом случае попробуйте добавить трассировку ошибок, так как это прояснит, где именно возникает эта ошибка.5. Ваш код слишком непитоничен (я пытался и не смог его исправить). Вы продолжаете ссылаться
Label
(как наtkinter.Label
объект) перед его определением. У вас есть перекрывающиеся виджеты. У вас есть импорт, разбросанный по вашей программе. Вы даже не используете последовательный интервал между белыми буквами. Ваши имена переменных совсем не полезны. Почему у вас естьglobal Tk
?
Ответ №1:
Когда вы это сделаете Label = Label(...)
, python увидит Label =
часть и сделает вывод, что Label
это локальная переменная, поскольку вы не объявили ее глобальной. Затем, когда python пытается это сделать Label(...)
, он все еще думает Label
, что это локальная переменная, но она еще не была инициализирована, поэтому выдает local variable 'Label' referenced before assignment
ошибку.
Корень проблемы в том, что вы используете Label
имя переменной, но Label
оно уже было импортировано в качестве имени класса.
Исправление простое: не создавайте переменную с именем Label
. Дайте ему какое-нибудь другое название.