Python: как получить, когда корневое окно закрыто в Tkinter - PullRequest
0 голосов
/ 06 октября 2019

Я занимался сборкой приложений с Tkinter и столкнулся с проблемой, когда закрытие основного окна Tk() не приводит к уничтожению базовой оболочки python. Вскоре я понял, что python-vlc фактически заставляет программу ждать, пока не остановится песня, которую я положил для воспроизведения.

Я думал, что достаточно просто поместить и exit() или quit() после root.mainloop(),но он, похоже, не выполняет его после закрытия окна, поэтому я понял, что мне нужен был способ вызова функции Mediaplayer.stop () при закрытии окна.

Примечание: немой реальный код, но пример поведения

import vlc

class Manager():

    def __init__(self):

        self.root = Tk()

        self.song = vlc.Mediaplayer("Song.mp3")
        song.start()

        self.root.mainloop()

        print("Killing Program...")
        exit()

Когда self.root закрыт:

Ожидается: Song останавливается, оболочка python закрывается.

Observed: SongВоспроизведение n секунд до закрытия оболочки Python.

Примечание: я запускаю файл как файл .pyw в терминале, не знаю, влияет ли это на что-то, но я достигаютот же эффект при работе в IDLE или в моей IDE (Jupyter Lab).

...