Python Pygame音乐暂停/取消暂停切换

Python Pygame音乐暂停/取消暂停切换,python,pygame,toggle,keypress,Python,Pygame,Toggle,Keypress,好的,这是我的代码: def toggleMusic(): if pygame.mixer.music.get_busy(): pygame.mixer.music.pause() else: pygame.mixer.music.unpause() ---事件处理--- 如果按“m”,则应切换音乐是否暂停 toggleMusic() 它可以暂停音乐但不能取消暂停,有什么解释吗?它不会取消暂停音乐,因为pygame.mixer.music.

好的,这是我的代码:

def toggleMusic():

    if pygame.mixer.music.get_busy():
        pygame.mixer.music.pause()

    else:
        pygame.mixer.music.unpause()
---事件处理---

如果按“m”,则应切换音乐是否暂停

toggleMusic()

它可以暂停音乐但不能取消暂停,有什么解释吗?

它不会取消暂停音乐,因为
pygame.mixer.music.pause()
不会影响
pygame.mixer.music.get\u busy()的状态

要获得您正在寻找的行为,您需要维护自己的变量,该变量跟踪暂停/未暂停状态。您可以在类中执行此操作:

class mixerWrapper():

    def __init__(self):
        self.IsPaused = False

    def toggleMusic(self):
        if self.IsPaused:
            pygame.mixer.music.unpause()
            self.IsPaused = False
        else:
            pygame.mixer.music.pause()
            self.IsPaused = True

我也有同样的问题。供其他人参考,我的解决方案是使用一个简单的类

class Pause(object):

    def __init__(self):
        self.paused = pygame.mixer.music.get_busy()

    def toggle(self):
        if self.paused:
            pygame.mixer.music.unpause()
        if not self.paused:
            pygame.mixer.music.pause()
        self.paused = not self.paused

# Instantiate.

PAUSE = Pause()

# Detect a key. Call toggle method.

PAUSE.toggle()

这个不错,我用它做游戏

来源


音乐暂停后,您是否尝试打印get_busy的值以确认其为False?您需要修复缩进。实际上,
toggleMusic
方法中的每一行缩进都不正确。仅为此创建一个单独的类也可能会有些过分。@elParaguayo已修复,谢谢。你同意这可能有点过分,你也可以把一个IsPaused变量传递到
toggleMusic
code-only答案在这个网站上是不受欢迎的。请编辑您的答案,包括一些注释或对代码的解释,好吗?解释应该回答这样的问题:它做什么?它是如何做到的?它去哪里了?它如何解决OP的问题?
is_paused = False

def toggle_pause():
    global is_paused
    if is_paused == True:
        is_paused = False
    else:
        is_paused = True

wn.listen()
wn.onkeypress(toggle_pause, " ")

while True:
    if not is_paused:
        bob.fd(1)
        bob.lt(1)
    else:
        wn.update()