true_pelmeshek
@true_pelmeshek
Я нажал куда-то не туда и всё сломалось

В чем причина вылета программы?

Заранее извиняюсь - совсем ещё новичок и решительно не знаю, что делать.
Пишу mp3-плеер. Вроде бы всё идёт отлично. Кнопка play посередине вызывает одноимённую функцию:
def play():
    global audiofile, mp3_lst, mp3_patch, \
        plitem, title, song_time, lng, secs,\
        mins, hours, div, div2, time_to_move
    mp3_patch = mp3_lst[plitem]
    audiofile = mutagen.File(dir + "\\" + mp3_patch)
    title = mp3_patch[0:-4]
    name_text.config(text=title)
    lng = int(audiofile.info.length)
    if lng >= 60:
        div = divmod(lng, 60)
        mins = div[0]
        secs = div[1]
    else:
        mins = 0
        secs = lng
    if mins >= 60:
        div2 = divmod(mins, 60)
        hours = div2[0]
        mins = div2[1]
    else:
        hours = 0
    song_time = timedelta(minutes=mins,
                          seconds=secs,
                          milliseconds=hours)
    time1_label.config(text=song_time)


И всё работает, вплоть до добавления в конец кода функции следующего фрагмента, который призван перемещать круг по шкале воспроизведения:
time_to_move = (300-5-1) / lng
    while time2_label['text'] != time1_label['text']:
        time.sleep(1)
        canvas.move(play_circle,
                    time_to_move,
                    0)


Отображается только белый экран, а через 5 секунд python перестаёт реагировать. В чём может быть причина?5d5c1c6bdd556360912269.png
  • Вопрос задан
  • 116 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
События графического интерфейса обрабатываются бесконечным циклом, который запускается, когда вы вызываете mainloop() Его нельзя останавливать, иначе приложение зависнет. А цикл while и вызов time.sleep(1) именно это и делают.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы