我一直在使用Tkinter进行一些应用程序构建,但我偶然遇到了一个问题,即关闭主Tk()
窗口并不会杀死底层的python shell。我很快意识到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关闭时:
预期:歌曲停止,python外壳关闭。
观察到:歌曲在关闭python shell之前播放 n 秒。
NB:我正在终端中将文件作为.pyw文件运行,不知道这是否会影响任何事情,但是在IDLE或IDE(Jupyter Lab)中运行时,我会达到相同的效果。