繁体   English   中英

为什么在代码的rest之前播放声音?

[英]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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM