2017-10-17 9 views
0

私は、メニューのカスケードを持っています。このカスケードには、バックグラウンドミュージックをアプリに切り替えるためのチェックボックスがあります(python tkinterを使用)。CheckButtonに基づいて音楽をオン/オフに切り替える

アプリが(root.mainloop()経由で)実行されると、バックグラウンドミュージックは既に再生されています。チェックボックスの隣には、チェックマークが付いています。

チェックボタンをオフにすると、self.sound_offコマンドによってサウンドがオフになります。

問題は、ボタンをもう一度クリックすると(チェックが表示される)、サウンドがオンにならないことです。これは私がチェックボタンで指定したコマンドが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? 

すべてのヘルプは高く評価されます。

答えて

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() 
を働くだろう
関連する問題