PlaySound() 减慢进程

PlaySound() slows down process

我的程序中有以下代码:

self["text"]="✖"              
self["bg"]="red"              
self["relief"] = SUNKEN
self.banged = True
self.lost = True
self.lettersLeft = 0
self.lettersBanged = self.lettB
winsound.PlaySound('sound.wav', winsound.SND_FILENAME)
messagebox.showerror("Letter Banging","Sorry, you lost the game!", parent=self)
for key in self.squares.keys():
    if self.squares[key].value == 3:
        self.squares[key].banged = False
        self.squares[key].expose()

我刚刚添加了 winsound.PlaySound('sound.wav', winsound.SND_FILENAME) 部分,它减慢了我的程序。事实上,它先播放声音,然后再执行之前的操作。我正在使用 Python 和 tKinter。有什么建议吗?

当你改变一个widget的属性,比如编辑内容,背景和浮雕,这个改变不会立即出现,它们会被记录下来,只有当你交给主循环时才会生效引起您的应用程序重绘。这会导致您观察到的行为:播放声音,然后回调结束,并重新绘制以显示您的更改。

在回调播放声音的所有时间里,您的应用程序都不会响应。如果您估计您的声音足够短,您可以在您想要首先显示的 UI 更改和调用 PlaySound 之间的某处添加 self.update()

如果您想避免您的应用出现任何无响应,您可以在另一个线程中播放声音

sound_thread = threading.Thread(target=lambda:winsound.PlaySound('sound.wav', winsound.SND_FILENAME))
sound_thread.start()