我正在制作一个计时器程序,我希望它在计时器结束时播放一首歌曲,但我也想在按下按钮时停止声音。
我看过其他使用多处理模块(如何使用 playsound 模块停止音频?)来停止音频的帖子,但我已经在使用线程模块,所以我想知道是否可以使用它来停止音频。
编辑:Matiis 提供了一个与我正在寻找的不同的解决方案,但它仍然可以完美运行。荣耀9211 也提供了我稍后寻找的解决方案
from tkinter import *
from time import sleep
from threading import Thread
from threading import Event
import playsound
class App(Tk):
def __init__(self):
super().__init__()
self.title("Clock")
self.t_evt = Event()
self.frame2 = Frame(self)
self.timerStart = Button(self.frame2, text="Start", command=self.tt_Start)
self.timerStart.config(height=2, width=5)
self.timerStart.grid(row=1)
self.timerEnd = Button(self.frame2, text="End", command=self.timer_End)
self.timerEnd.config(height=2, width=5)
self.timerEnd.grid(row=2)
def tt_Start(self):
t = Thread(target=self.timer_Start)
t.setDaemon(True)
t.start()
def timer_Start(self):
self.t_evt.clear()
timer_seconds = int(self.timerS_Entry.get())
timer_minutes = int(self.timerM_Entry.get())
if timer_seconds > 59:
timer_seconds -= 60
timer_minutes += 1
while not self.t_evt.is_set():
print(f"Minutes: {timer_minutes}, Seconds: {timer_seconds}")
self.timerSeconds.config(text=timer_seconds)
self.timerMinutes.config(text=timer_minutes)
self.update()
time = (timer_minutes * 60) + timer_seconds
timer_seconds -= 1
sleep(1)
if time == 0:
break
if timer_seconds < 0:
timer_seconds = 59
timer_minutes -= 1
playsound.playsound('C:\\Users\\nonon\\mp3\\song.wav')
print("TIMER UP")
return
def timer_End(self):
self.t_evt.set()
这里有一些代码供您使用,如果您需要更多代码,请告诉我。
同样,我希望能够playsound.playsound('C:\\Users\\nonon\\mp3\\song.wav')
在按下结束按钮时停止