首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用tkinter和pygame让单个按钮在Python中播放音乐、暂停音乐和取消暂停音乐?

如何使用tkinter和pygame让单个按钮在Python中播放音乐、暂停音乐和取消暂停音乐?
EN

Stack Overflow用户
提问于 2020-08-15 21:38:22
回答 3查看 1.2K关注 0票数 0

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

代码语言:javascript
复制
 def Play_music():
     pygame.mixer.music.load('tavernsound.mp3')
     pygame.mixer.music.play()

下面是按钮的代码:

代码语言:javascript
复制
btn11=Button(labelframe, text='Ambiance', width=14, bg='red', fg='black', command=Play_music)
btn11.pack(side=LEFT)
EN

回答 3

Stack Overflow用户

发布于 2021-02-18 13:11:29

将复选按钮文本与if条件一起使用

示例:

代码语言:javascript
复制
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()
票数 1
EN

Stack Overflow用户

发布于 2020-08-15 22:10:01

下面是一个例子。

代码语言:javascript
复制
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: expressionlambda函数。每次单击该按钮时,task值都会更改。

票数 0
EN

Stack Overflow用户

发布于 2020-08-15 22:16:56

我使用您的代码创建了这个示例。它根据@AST答案更改按钮文本:

代码语言:javascript
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63426651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档