2

我正在尝试winsound在 Python 3 中使用。要开始声音,我会这样做:

play = lambda: PlaySound('Sound.wav', SND_FILENAME)
play()

这只会播放一次声音,但我想循环播放。是否有内置功能来循环声音?

下一步:在 tkinter 我有一个带有命令的按钮:

button3 = Button(root, text="Stop Alarm", fg="Red", bg="Black", command=stopAlarm)

给定的命令应该停止播放已经循环的声音。这是功能:

def stopAlarm():
    #stop the alarm

所以简而言之,我想循环播放声音,并且能够停止声音,知道如何实现这一点吗?

4

1 回答 1

3

要使用 连续播放声音winsound,您可以将SND_FILENAME, SND_LOOP, SND_ASYNC常量与按位 OR组合|SND_FILENAME|SND_LOOP|SND_ASYNC

要停止声音,您可以将None第一个参数传递给PlaySound.

import tkinter as tk
from winsound import PlaySound, SND_FILENAME, SND_LOOP, SND_ASYNC


class App:

    def __init__(self, master):
        frame = tk.Frame(master)
        frame.pack()
        self.button = tk.Button(frame, text='play', command=self.play_sound)
        self.button.pack(side=tk.LEFT)
        self.button2 = tk.Button(frame, text='stop', command=self.stop_sound)
        self.button2.pack(side=tk.LEFT)

    def play_sound(self):
        PlaySound('Sound.wav', SND_FILENAME|SND_LOOP|SND_ASYNC)

    def stop_sound(self):
        PlaySound(None, SND_FILENAME)

root = tk.Tk()
app = App(root)
root.mainloop()
于 2017-10-24T08:13:51.667 回答