Python 如何在按下按钮时播放音频
我在设置按下时播放音频的按钮时遇到问题。 我对按钮使用了Python 如何在按下按钮时播放音频,python,tkinter,Python,Tkinter,我在设置按下时播放音频的按钮时遇到问题。 我对按钮使用了tkinter,对音频使用了simpleudio x = "" def audio(file): x = file return x window = tk.Tk() window.title("Audio") audio_button = tk.Button(window,text="Audio Test",command=audio("imposter
tkinter
,对音频使用了simpleudio
x = ""
def audio(file):
x = file
return x
window = tk.Tk()
window.title("Audio")
audio_button = tk.Button(window,text="Audio Test",command=audio("imposter")).pack(side="left")
audio_button1 = tk.Button(window,text="Audio Test Two",command=audio("crewmate")).pack(side="left")
stop_all = tk.Button(window,text="Stop All",command=audio("stop"),fg="red").pack(side="left")
tk.mainloop()
while True:
if not x == "stop":
if x == "crewmate":
wave_obj = sa.WaveObject.from_wave_file("File here")
play_obj = wave_obj.play()
while play_obj.is_playing():
if x == "stop":
break
else:
pass
elif x == "imposter":
wave_obj = sa.WaveObject.from_wave_file("File here")
play_obj = wave_obj.play()
while play_obj.is_playing():
if x == "stop":
break
else:
pass
else:
pass
如果代码也能稍微缩短一点,那就太好了。pack
pack
不返回任何值,因此,当您需要保留对小部件的引用时,应该将pack链接到小部件的创建
这里有一个可能的方法来解决你的问题;我没有简单的音频,所以我不能保证代码是完全正确的;带有simpleaudio
调用的代码行将被注释掉,print语句允许您验证逻辑。您必须取消对它们的评论,然后再试一次
逻辑在启动新文件之前停止所有音频;您可能想让它更方便用户,比如如果命令请求相同的歌曲,就让歌曲结束,而不是重新启动它
# import simpleaudio as sa
import tkinter as tk
def stop_audio():
print('stopping all')
# sa.stopall()
def test_audio(state):
if state == 'imposter':
path = "path/to/imposter.wav"
elif state == 'crewmate':
path = "path/to/crewmate.wav"
else:
return
# wave_obj = sa.WaveObject.from_wave_file(path)
stop_audio()
# play_obj = wave_obj.play()
print(f'playing {state}')
window = tk.Tk()
window.title("Audio")
audio_button = tk.Button(window,text="Audio Test", command=lambda state='imposter': test_audio(state))
audio_button.pack(side="left")
audio_button1 = tk.Button(window,text="Audio Test Two", command=lambda state='crewmate': test_audio(state))
audio_button1.pack(side="left")
stop_all = tk.Button(window,text="Stop All",fg="red", command=stop_audio)
stop_all.pack(side="left")
tk.mainloop()
非常感谢。这真的很有帮助,因为我正在为万圣节准备一个音频节目。