1

我正在编写一个简单的音乐播放器。

我在 Stackoverflow 中搜索了其他问题,但是,这些解决方案不适用于我的 pygame 构建。

我的代码如下。我正在使用 Tkinter 进行 gui 构建。

import sys
from Tkinter import *
import tkMessageBox
import pygame

myGui = Tk()


def mClose():
    mExit = tkMessageBox.askokcancel(title="Quit", message="are you sure?")
    if mExit ==True:
        myGui.destroy()
        return

def mPlay():    
    pygame.mixer.init()
    pygame.mixer.music.load("/home/david/Downloads/test.mp3")
    pygame.mixer.music.play()


def unPause():
    pygame.mixer.music.unpause()        


def mPause():
    pygame.mixer.music.pause()



myGui.title("My Audio")
myGui.geometry("200x200+600+300")
mLabel = Label(myGui, text="My Audio").pack()


''' Button for Closing App'''
mButton = Button(myGui, text="Close", command = mClose).pack()

'''Play Button'''
mButton = Button(myGui, text="Play", command = mPlay).pack()

'''Pause Button'''
mButton = Button(myGui, text="Pause", command = mPause).pack()

'''UnPause Button'''
mButton = Button(myGui, text="UnPause", command = unPause).pack() 

我已经厌倦了使用 pygame.mixer.music.get_busy() 来组合暂停和取消暂停。但是,如果它被暂停,则布尔值仍会返回 true 以表示处于活动状态。

我使用以下方法无济于事:

def play_pause():
    paused = not paused
    if paused: pygame.mixer.music.unpause()
    else: pygame.mixer.music.pause()

我得到以下信息:

File "/home/david/Documents/tkinter_testing.py", line 29, in play_pause
    paused = not paused
UnboundLocalError: local variable 'paused' referenced before assignment. 

任何想法或帮助。提前感谢您的帮助。

4

2 回答 2

1

您正在分配paused一个值,但为该值调用自己。我相信你正在寻找的是

paused = False

或者

paused = not True
于 2013-07-17T17:49:11.137 回答
1

你的逻辑不正确。

假设我们从暂停混音器开始,所以:

paused is True

我们调用 play_pause() 来切换它,paused 设置为不暂停,所以现在:

paused is False

所以我们执行 else 语句,并 pause() 混音器,但它已经暂停了。解决方案是将切换移动到设置之后(这可能是最清楚的)或反转从 if-else 块调用的逻辑。

于 2013-07-17T17:50:24.253 回答