Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python2.7,pygame,结合暂停和取消暂停按钮。_Python_Pygame - Fatal编程技术网

Python2.7,pygame,结合暂停和取消暂停按钮。

Python2.7,pygame,结合暂停和取消暂停按钮。,python,pygame,Python,Pygame,我正在编写一个简单的音乐播放器 我在Stackoverflow中搜索了其他问题,但是,这些解决方案不适用于我的pygame构建 我的代码如下。我正在使用Tkinter进行gui构建 import sys from Tkinter import * import tkMessageBox import pygame myGui = Tk() def mClose(): mExit = tkMessageBox.askokcancel(title="Quit", message="ar

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

我在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. 

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

您正在分配
暂停
一个值,但自己调用该值。我相信你要找的是

paused = False


你的逻辑不正确

假设我们从暂停混音器开始,因此:

paused is True
我们调用play_pause()将其切换,并且paused设置为not paused,因此现在:

paused is False

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

他使用not-paused切换变量,我假设该变量为布尔值。不真实就是虚假,不真实就是虚假True@Decency如果
暂停
最初分配了一个值,则他拥有的代码将是正确的。但是,代码第一次运行时
暂停
没有值,这会抛出一个错误,即它在赋值之前被引用。真!我假设它是最初设置的,但没有注意到错误。在这种情况下,他有两个问题:这是我在阅读上述内容后将代码更改为的内容。如果我错了,你能根据我的格式写出你的例子吗。我认为在translation.def play_pause():paused=False if paused==True:pygame.mixer.music.unpause()其他:pygame.mixer.music.pause())
paused is False