#python #tkinter
#python #tkinter
Вопрос:
Всякий раз, когда я упоминаю переменную (которая уже существует) в функции, она выдает эту ошибку:
UnboundLocalError: local variable 'count' referenced before assignment
Вот мой код:
from tkinter import *
from tkinter.ttk import *
import simpleaudio as sa
main = Tk()
list = ["you yu" , "she hui fa zan" , "bian hua" , "dui yi xie shi" , "you bu tong de kan fa" , "wan quan bu tong" , "chi ... de guan dian" , "qing chun qi" , "you ge xing", "yi zi wo wei zhong xin"]
count = 0
def next():
if count == 10:
Label(main, text="You have finished!").pack(side= TOP)
else:
Label(main, text= list[count]).pack(side= TOP)
count = str(count)
wave_obj = sa.WaveObject.from_wave_file(r"C:UsersUserDownloadsPyWebsounds\" count ".wav")
count = int(count)
play_obj = wave_obj.play()
play_obj.wait_done()
count = 1
Button(main, text= "next", command= next).pack(side= TOP)
main.mainloop()
Я не вижу ничего плохого в коде, пожалуйста, помогите мне.
Комментарии:
1. попробуйте поместить
main = Tk()
послеcount = 0
?2. В Python уже есть встроенный next(), поэтому вам следует использовать какое-то другое имя для вашей функции.
3. Простая
global count
внутренняя функция решит эту проблему, имейте в виду, она переопределит существующую встроеннуюnext()
функцию
Ответ №1:
next()
необходимо конкретно указать, что разрешено использовать глобальную переменную count
локально. Добавьте строку global count
в функцию, чтобы она выглядела так:
...
def next():
global count
if count == 10:
...
Для получения дополнительной информации о локальных и глобальных переменных ознакомьтесь с этой статьей из tutorialspoint .
Ответ №2:
Вам нужно переместить global
ключевое слово вниз в вашу функцию.
count = 0
def next():
global count