您可以将其作为带有隐藏窗口的 Tk 应用程序来驱动。跟进您之前的问题,以及这都是 mp3 播放器的一部分,这里是一个示例。
from Tkinter import *
import sys,tkSnack
def terminate(root):
root.quit()
def main(args = None):
if args is None:
args = sys.argv
root = Tk()
root.withdraw()
tkSnack.initializeSnack(root)
root.after(5000, terminate, root)
track = tkSnack.Sound(file=args[1])
track.play()
root.mainloop()
root.destroy()
return 0
if __name__=='__main__':
sys.exit(main())
在这种情况下,我们保留了根 Tk 窗口,但在它有机会被映射到屏幕上之前将其撤回。然后我们安排一个 5 秒时间的事件来终止应用程序,该应用程序将退出 Tk 事件循环,我们可以销毁所有内容并干净地退出。这是因为 play() 命令使音轨开始播放并立即返回。声音数据由事件循环处理 - 因此不运行事件循环将停止播放。
如果没有导致提前终止的 after 事件,应用程序最终会用完文件中的所有声音数据,然后挂起。play() 方法在播放结束时接收一个要运行的命令,这样我们就可以让主循环在正确的时间正确退出,而不是猜测时间并在事件后使用。