为什么声音在其余代码之前播放?
Why does the sound play before the rest of the code?
我想让方块变绿和声音一起播放,或者如果这不可能,那么我想先让方块变绿。但我不知道为什么先播放声音...
这是我的代码:
def number(*args):
try:
x = r.get()
if x <= '3':
s.configure('Danger.TFrame', background='green',
borderwidth=5, relief='raised')
ttk.Frame(root, width=200, height=200, style='Danger.TFrame')
winsound.PlaySound('dotto.wav', winsound.SND_FILENAME)
print("green")
elif x >= "5":
s.configure('Danger.TFrame', background='red',
borderwidth=5, relief='raised')
ttk.Frame(root, width=200, height=200, style='Danger.TFrame')
print("red")
else:
s.configure('Danger.TFrame', background='orange',
borderwidth=5, relief='raised')
ttk.Frame(root, width=200, height=200, style='Danger.TFrame')
print("orange")
except:
print("error")
我用的是winsound,正在播放的文件是dotto.wav。
谢谢,
winsound.PlaySound()
默认情况下是一个阻塞方法调用,这意味着它会等到播放完声音后再继续其他任何事情。
在您的情况下,“其他任何事情”可能包括渲染(现在是绿色的)块。
所以在你的示例代码中,你的 Block 是 在开始播放声音之前变为绿色,但你可能看不到,因为它不是重新 -在屏幕上绘制,直到声音结束后。
要告诉winsound你不想等待声音结束,你需要传递winsound.SND_ASYNC
参数。
winsound.PlaySound('dotto.wav', winsound.SND_FILENAME | winsound.SND_ASYNC)
我想让方块变绿和声音一起播放,或者如果这不可能,那么我想先让方块变绿。但我不知道为什么先播放声音... 这是我的代码:
def number(*args):
try:
x = r.get()
if x <= '3':
s.configure('Danger.TFrame', background='green',
borderwidth=5, relief='raised')
ttk.Frame(root, width=200, height=200, style='Danger.TFrame')
winsound.PlaySound('dotto.wav', winsound.SND_FILENAME)
print("green")
elif x >= "5":
s.configure('Danger.TFrame', background='red',
borderwidth=5, relief='raised')
ttk.Frame(root, width=200, height=200, style='Danger.TFrame')
print("red")
else:
s.configure('Danger.TFrame', background='orange',
borderwidth=5, relief='raised')
ttk.Frame(root, width=200, height=200, style='Danger.TFrame')
print("orange")
except:
print("error")
我用的是winsound,正在播放的文件是dotto.wav。
谢谢,
winsound.PlaySound()
默认情况下是一个阻塞方法调用,这意味着它会等到播放完声音后再继续其他任何事情。
在您的情况下,“其他任何事情”可能包括渲染(现在是绿色的)块。
所以在你的示例代码中,你的 Block 是 在开始播放声音之前变为绿色,但你可能看不到,因为它不是重新 -在屏幕上绘制,直到声音结束后。
要告诉winsound你不想等待声音结束,你需要传递winsound.SND_ASYNC
参数。
winsound.PlaySound('dotto.wav', winsound.SND_FILENAME | winsound.SND_ASYNC)