基于CheckButton打开和关闭音乐

时间:2017-10-17 05:48:29

标签: python pygame toggle audio-player

我有一个菜单级联,它有一个用于打开/关闭背景音乐的检查按钮到应用程序(使用python tkinter)。

当应用程序运行时(通过root.mainloop()),背景音乐已经在播放,并且检查按钮旁边有一个勾号,就像我想要的那样(表示它已打开)。

当我关闭检查按钮时,声音因self.sound_off命令而关闭。

问题是当我再次单击该按钮(并且出现勾号)时,声音无法打开。我意识到这是因为我在checkbutton中指定的命令是command = sound.off()。但是我不知道如何制作它以便当嘀嗒声出现时声音播放(或取消暂停),当嘀嗒声不存在时声音会暂停。

# within def __init__(self, master) of the app
self.add_sound()

self._value = IntVar(value=1)

menubar = tk.Menu(master)
master.config(menu=menubar)
filemenu = tk.Menu(menubar)        
filemenu.add_checkbutton(label="Music", onvalue=1, offvalue=0, variable= 
                          self._value, command=self.sound_off)


def add_soud(self):
    pygame.mixer.music.load("Sound.mp3")
    pygame.mixer.music.set_volume(0.2)
    pygame.mixer.music.play(-1)

def sound_off(self):
    pygame.mixer.music.pause()

def sound_on(self):
    pygame.mixer.music.unpause()

#Am I supposed to have some sort of 'if' statement to check if the onvalue is 
#0 or 1?

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

这样可行

filemenu.add_checkbutton(label="Music", onvalue=1, offvalue=0, variable= 
                      self.sound_value, command=self.sound_manipulation)

def sound_manipulation(self):
    if self.sound_value.get() == 1:
        pygame.mixer.music.unpause()
    else:
        pygame.mixer.music.pause()