gpt4 book ai didi

python - 如何在每次按下按钮时播放声音而不卡住 Tkinter

转载 作者:行者123 更新时间:2023-12-04 04:14:30 27 4
gpt4 key购买 nike

我一直在修补几天前完成的 Tkinter 项目,我想添加一些声音以使其更有趣。

我用 winsound 添​​加按钮声音是这样的:

(简化代码)

import winsound
from Tkinter import *

root = Tk()

canvas = Canvas(root, height=500, width=500)
canvas.pack()

def printtext():
winsound.PlaySound("button.wav", winsound.SND_ALIAS)
print("Hi")

button = Button(root, text=("button"), command=printtext)
button.pack()

root.mainloop()

这在技术上可行,但由于代码同步运行,GUI 会卡住,直到声音完整播放。

为了解决这个问题,我使用线程在后台播放声音,同时其余函数运行。

像这样:

(简化代码)

import winsound
import threading
from tkinter import *

root = Tk()

canvas = Canvas(root, height=500, width=500)
canvas.pack()

def playsound():
winsound.PlaySound("button.wav", winsound.SND_ALIAS)

threadsound = threading.Thread(target=playsound)

def printtext():
threadsound.start()
print("Hi")

button = Button(root, text=("button"), command=printtext)
button.pack()

root.mainloop()

同样,它在技术上是可行的,但线程只能启动一次,所以我被困在这里。

还有其他方法可以实现吗?

最佳答案

所以,我最终放弃了那部分代码并将其替换为 pygame 模块,因为我发现它更灵活,但是,是的,将 threadsound = ... 移动到 printtext() 中,正如 acw1668 指出的那样解决了我遇到的问题用线

非常感谢acw1668

关于python - 如何在每次按下按钮时播放声音而不卡住 Tkinter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61021202/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com