Я занимался сборкой приложений с 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).