猿问

如何使用 tkinter 和 pygame 在 Python 中让单个 Button 播放音乐

我只能在按下按钮时让程序播放音乐。我试图暂停或停止音乐的一切都以失败告终。我觉得我应该使用 if 语句来暂停音乐(如果当前正在播放)或取消暂停(如果不是),但我需要了解正确的编写方法。这是正确的方法吗?我真的希望能够通过一个按钮开始、暂停和取消暂停音乐,但我正在努力弄清楚如何编写代码。这是我播放音乐的代码。


 def Play_music():

     pygame.mixer.music.load('tavernsound.mp3')

     pygame.mixer.music.play()

这是按钮的代码:


btn11=Button(labelframe, text='Ambiance', width=14, bg='red', fg='black', command=Play_music)

btn11.pack(side=LEFT)


holdtom
浏览 181回答 3
3回答

森栏

使用带有 if 条件示例的检查按钮文本:from tkinter import Tk, Buttonfrom pygame import mixerroot = Tk()root.title("Play Music")root.geometry('350x200')mixer.init()mixer.music.load("sound.mp3")def play_music():    if button["text"] == "Play":        button["text"] = "Pause"        button["bg"] = "red"        mixer.music.play()    else:        button["text"] = "Play"        button["bg"] = "green"        mixer.music.pause()button = Button(root, text='Play', width=14, bg='green', fg='black', command=play_music)button.pack()root.mainloop()

梵蒂冈之花

这是一个例子。from tkinter import *root = Tk()def doSomething(task):    global var, button    if task == 0:        var.set("Started Playing")        button.configure(text = "Pause")        button.configure(command = lambda task = 1: doSomething(task))        #play    elif task == 1:        var.set("Paused")        button.configure(text = "Resume")        button.configure(command = lambda task = 0: doSomething(task))        #pausebutton = Button(root, text = "Play", command = lambda task = 0: doSomething(task))button.pack()var = StringVar()label = Label(root, textvariable = var)label.pack()root.mainloop()这里同一个按钮用于播放、暂停和恢复。我使用了lambda具有语法的函数lambda arguments: expression。task每次单击按钮时,值都会更改。

潇潇雨雨

我使用您的代码创建了这个示例。from tkinter import *import pygameroot = Tk()root.title("MSC")pygame.init()mxstate = 0 # music play statepygame.mixer.music.load('tavernsound.mp3')def Play_music():     global mxstate     if mxstate == 0:  # music not started         pygame.mixer.music.play()         btn11.configure(text = "Pause")         mxstate =  1         return             if mxstate == 1:  # music playing         pygame.mixer.music.pause()         btn11.configure(text = "Resume")     else:  # music paused         pygame.mixer.music.unpause()         btn11.configure(text = "Pause")     mxstate = 3-mxstate  # swap pause state     btn11=Button(root, text='Ambiance', width=14, bg='red', fg='black', command=Play_music)btn11.pack(side=LEFT)root.mainloop()
随时随地看视频慕课网APP

相关分类

Python
我要回答