これは、非表示のウィンドウを持つ 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 ウィンドウを保持しますが、画面にマップされる機会を得る前にそれを撤回します。次に、Tk イベント ループを終了するアプリケーションを終了するイベントを 5 秒間スケジュールします。これにより、すべてを破棄して正常に終了できます。これが機能するのは、play() コマンドによってサウンド トラックの再生が開始され、すぐに戻るためです。サウンド データはイベント ループで処理されるため、イベント ループを実行しないと再生が停止します。
after イベントが早期終了を引き起こさないと、アプリケーションは最終的にファイルからすべてのサウンド データを使い果たし、ハングします。play() メソッドは、再生が終了したときに実行されるコマンドを受け取るため、時間を推測してイベント後に使用するのではなく、適切なタイミングでメインループを適切に終了させることができます。