python - 如何使用 winsound 阻止声音相互叠加? (Python 和 tkinter)

标签 python button audio tkinter winsound

我正在尝试使用 tkinter 在 python 中创建一个简单的音板。我的目标是只有一个按钮,在本例中名为“bruh”,每次单击该按钮时,都会播放“bruh.wav”声音。

到目前为止,它似乎有效,但是如果我重复按下按钮,声音就会相互堆叠,就像一个队列一样。如何使每次按下按钮都会取消任何声音播放并仅播放 wav 文件的开头部分?

我已经阅读了winsound模块,“PURGE”命令似乎很有趣,但我不确定如何实现它,我只是一个初学者,抱歉!

from tkinter import *

root = Tk()

def leftClick(event):
    import winsound
    winsound.PlaySound("realbruh.wav", winsound.SND_FILENAME)



frame = Frame(root, width=600, height=600)

bruhButton = Button(root, text="bruh")
bruhButton.bind("<Button-1>", leftClick)
bruhButton.pack()

root.mainloop()

即:如果我要向按钮发送垃圾邮件,“bruh”声音会一个接一个地播放,直到达到我单击按钮的次数。我该如何做才能让它们互相打断,并且没有队列的事情?

最佳答案

如果声音是您所需要的并且可以使用 pygame 模块,那么尝试我的方法。

如果你没有 pygame 模块那么 install使用pip install pygame。我在 tkinter 项目中使用 pygame 模块来实现所有音效,效果很好。

这是我的做法:

from tkinter import *
import pygame

pygame.mixer.init()  # initialise `init()` for mixer of pygame. 
sound = pygame.mixer.Sound("bruh.wav")  # Load the sound.

root = Tk()

def leftClick(event):
    sound.stop()  # Stop the ongoing sound effect.
    sound.play()  # Play it again from start.

frame = Frame(root, width=600, height=600)

bruhButton = Button(root, text="bruh")
bruhButton.bind("<Button-1>", leftClick)
bruhButton.pack()

root.mainloop()

关于python - 如何使用 winsound 阻止声音相互叠加? (Python 和 tkinter),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56159759/

相关文章:

linux - linux分层系统中的声音系统是否为OSI模型?

Python pygame.mouse.get_pos() 坐标在 IDE 终端中打印,但当鼠标移动时游戏窗口中的对象不移动

python - Shebang 指向特定的 virtualenv - 这是个好主意吗?

javascript - 如何替换 JQuery 属性中的子字符串

uitableview - 在自定义 UITableViewCell 中点击按钮时如何更改 View

Android不同的按钮样式取决于API级别

android - 实现数字滤波器 - 通过卷积或差分方程?

python - 如何用python获取图像的完整链接?

python - 动态更新wxPython staticText

audio - cocos2d-x:更改音频播放速率