0

Enviroment:

Python 3.10.3, VSCode, Windows 11

Describing:

I write a program with tkinter by Python.

def examination():
    exam = Frame()
    exam.pack()
    quesinfo = []
    quesnumb = 0

    def next():
        is_right.forget()
        nextques.forget()
        okayques.grid(column=5, row=2, columnspan=2)
        quesnumb += 1
        quesinfo.append(core())
        question.set(quesinfo[quesnumb][0])

This is just a part of my code, but the problem is here. When I run the program, the interpreter says:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\${MyName}\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1921, in __call__
    return self.func(*args)
  File "d:\Python\Usable Programs\Auto Maths Questions UI\Main.py", line 102, in next
    quesnumb = quesnumb + 1
UnboundLocalError: local variable 'quesnumb' referenced before assignment

You know, quesnumb is a local variable, so I can't use global to declare it. But, that's joking! Look at to the source code again:

quesinfo.append(core())
question.set(quesinfo[quesnumb][0])

It's correct, But why quesnumb += 1 is not?

Fixing and Debugging

I tried my best to fix it.
For testing and dubugging, I replaced quesnumb += 1 to quesnumb = 1. It ran successfully!
I think, maybe quesnumb can just reference or assignment? So I replaced it to quesnumb = quesnumb + 1.

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\${MyName}\AppData\Local\Programs\Python\Python310\lib\tkinter\__init__.py", line 1921, in __call__
    return self.func(*args)
  File "d:\Python\Usable Programs\Auto Maths Questions UI\Main.py", line 102, in next
    quesnumb = quesnumb + 1
UnboundLocalError: local variable 'quesnumb' referenced before assignment

Uh-huh... That's a real Unexpect Wrong...

I must get the answer in time, because I'll use this program on a competition at Sunday (Mar. 27). Winning the competition is all depends on this program. Could you help me to check the problem and find the root cause? Thanks so much!

0 Answers0