我只能在按钮被按下的时候让程序播放音乐。我试图暂停或停止音乐的一切都以失败告终。我觉得我应该使用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)发布于 2021-02-18 13:11:29
将复选按钮文本与if条件一起使用
示例:
from tkinter import Tk, Button
from pygame import mixer
root = 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()发布于 2020-08-15 22:10:01
下面是一个例子。
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))
#pause
button = Button(root, text = "Play", command = lambda task = 0: doSomething(task))
button.pack()
var = StringVar()
label = Label(root, textvariable = var)
label.pack()
root.mainloop()在这里,同样的按钮用于播放、暂停和恢复。我使用了语法为lambda arguments: expression的lambda函数。每次单击该按钮时,task值都会更改。
发布于 2020-08-15 22:16:56
我使用您的代码创建了这个示例。它根据@AST答案更改按钮文本:
from tkinter import *
import pygame
root = Tk()
root.title("MSC")
pygame.init()
mxstate = 0 # music play state
pygame.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()https://stackoverflow.com/questions/63426651
复制相似问题