如何使用 winsound 阻止声音相互叠加? (Python 和 tkinter)
How do I stop sounds stacking on top of each other with winsound? (Python and tkinter)
我正在尝试使用 tkinter 在 python 中创建一个简单的音板。我的目标是只有一个按钮,在本例中标题为 "bruh",每次单击该按钮时,它都会播放 "bruh.wav" 声音。
到目前为止它似乎可以工作,但是如果我反复按下按钮,声音会相互叠加,就好像它是 queue 一样。我如何做到每次按下按钮都会取消任何声音播放,只播放 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" 声音会一个接一个地播放,直到达到我点击按钮的次数。我要怎么做才能让他们互相打断,而且没有queue的东西?
如果您只需要声音并且可以使用 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()
我正在尝试使用 tkinter 在 python 中创建一个简单的音板。我的目标是只有一个按钮,在本例中标题为 "bruh",每次单击该按钮时,它都会播放 "bruh.wav" 声音。
到目前为止它似乎可以工作,但是如果我反复按下按钮,声音会相互叠加,就好像它是 queue 一样。我如何做到每次按下按钮都会取消任何声音播放,只播放 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" 声音会一个接一个地播放,直到达到我点击按钮的次数。我要怎么做才能让他们互相打断,而且没有queue的东西?
如果您只需要声音并且可以使用 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()