使用 python tkinter 和 pygame 播放 mp3
Playing mp3 with python tkinter and pygame
这是新手。尝试创建一个输入 mp3 文件路径的 tkinter GUI,按下播放按钮开始播放,按下停止按钮停止。使用下面的代码,mp3 播放正常。然而,停止按钮完全没有反应,mp3 继续播放。任何有用的建议都会
非常感谢。
import tkinter as tk
from pygame import mixer,time
class PlayMusic:
def __init__(self):
self.win=tk.Tk()
self.win.geometry('500x100+600+400')
self.win.title("Teo's Music Player")
myfont=('Arial',14,'bold')
self.lbl=tk.Label(self.win,text='Enter path',font=myfont)
self.lbl.grid(row=0,column=0)
self.ent=tk.Entry(self.win,width=25)
self.ent.grid(row=0,column=1)
self.b_start=tk.Button(self.win,text='Start >',command=self.start)
self.b_start.grid(row=1,column=0)
self.b_stop=tk.Button(self.win,text='Stop |',command=self.stop)
self.b_stop.grid(row=1,column=1)
self.win.mainloop()
def start(self):
path = str(self.ent.get())
mixer.init()
mixer.music.set_volume(0.2)
mixer.music.load(path)
mixer.music.play()
while mixer.music.get_busy():
time.Clock().tick(1)
def stop(self):
mixer.music.stop()
PlayMusic()
只需从 stop
方法中删除 while
循环:
def start(self):
path = str(self.ent.get())
mixer.init()
mixer.music.set_volume(0.2)
mixer.music.load(path)
mixer.music.play()
# DELETE
# while mixer.music.get_busy():
# time.Clock().tick(1)
当音乐正在播放时,此循环不会终止并阻止应用程序响应。
您只需要在本机 Pygame 应用程序中使用这样的循环来防止应用程序立即退出(参见 How can I play an mp3 with pygame? and how to play wav file in python?)。
这是新手。尝试创建一个输入 mp3 文件路径的 tkinter GUI,按下播放按钮开始播放,按下停止按钮停止。使用下面的代码,mp3 播放正常。然而,停止按钮完全没有反应,mp3 继续播放。任何有用的建议都会 非常感谢。
import tkinter as tk
from pygame import mixer,time
class PlayMusic:
def __init__(self):
self.win=tk.Tk()
self.win.geometry('500x100+600+400')
self.win.title("Teo's Music Player")
myfont=('Arial',14,'bold')
self.lbl=tk.Label(self.win,text='Enter path',font=myfont)
self.lbl.grid(row=0,column=0)
self.ent=tk.Entry(self.win,width=25)
self.ent.grid(row=0,column=1)
self.b_start=tk.Button(self.win,text='Start >',command=self.start)
self.b_start.grid(row=1,column=0)
self.b_stop=tk.Button(self.win,text='Stop |',command=self.stop)
self.b_stop.grid(row=1,column=1)
self.win.mainloop()
def start(self):
path = str(self.ent.get())
mixer.init()
mixer.music.set_volume(0.2)
mixer.music.load(path)
mixer.music.play()
while mixer.music.get_busy():
time.Clock().tick(1)
def stop(self):
mixer.music.stop()
PlayMusic()
只需从 stop
方法中删除 while
循环:
def start(self):
path = str(self.ent.get())
mixer.init()
mixer.music.set_volume(0.2)
mixer.music.load(path)
mixer.music.play()
# DELETE
# while mixer.music.get_busy():
# time.Clock().tick(1)
当音乐正在播放时,此循环不会终止并阻止应用程序响应。
您只需要在本机 Pygame 应用程序中使用这样的循环来防止应用程序立即退出(参见 How can I play an mp3 with pygame? and how to play wav file in python?)。