Я получаю UnboundLocalError
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1264.0_x64__qbz5n2kfra8p0\lib\tkinter\__init__.py", line 1921, in __call__
return self.func(*args)
File "C:\Users\Ya Bish\Projects\Obracun Sati\main.py", line 249, in item_selected
app = EmpWindow(top,record)
UnboundLocalError: local variable 'record' referenced before assignment
при запросе имени файла и
def __init__(self,master):
self.master = master
self.openButton = Button(self.frame, text = "Open",
command=self.openFile)
...
self.tree = Treeview(self.master, columns=self.columns, show = "headings")
...
self.tree.bind('<<TreeviewSelect>>', self.item_selected)
def openFile(self):
...
self.tree.delete(*self.tree.get_children())
filename = filedialog.askopenfilename()
calc(filename)
for e in emps:
self.tree.insert('', END, values=e.treeValues)
пока это окно Верхний уровень() либо активно, либо было активным ранее.
def item_selected(self, event):
for selected_item in self.tree.selection():
item = self.tree.item(selected_item)
record = item['values'][0]
top = Toplevel()
app = EmpWindow(top,record)
top.mainloop()
Эмпвинд — это просто класс ноутбука с двумя определенными вкладками и парой ярлыков, поэтому я не думаю, что этот код необходим. Это может быть ошибка с мероприятие и Связывать, но я вообще не понимаю эту часть, поэтому я даже не знаю, как к ней подойти.
Мы не можем запустить ваш код, чтобы увидеть, в чем может быть проблема. Покажите нам минимальный воспроизводимый пример: stackoverflow.com/help/минимально-воспроизводимый-пример
Это ошибка, которую вы получите, если self.tree.selection()
вернет что-то пустое.
Это может происходить из-за того, что ваш цикл for в item_selected
даже не получает ни одной итерации, и в этом случае record
никогда не будет определен. Упрощенная версия этого выглядит следующим образом.
def f():
for x in range(0):
print(x)
print(x)
f()
Это дает ту же ошибку, что и ваш код. Такая ошибка возникает всякий раз, когда вы ссылаетесь на переменную до того, как присвоите ей значение внутри функции.
Поместите всю трассировку ошибки в текст вопроса.