两个用于切换声音的复选按钮无法正常工作

Two checkbuttons to toggle sound not working right

    self.mb = Menubutton ( self.window2, text="Sound Toggler", relief=RAISED )
    self.mb.grid(row=4, column = 0)
    self.mb.menu  =  Menu ( self.mb, tearoff = 0 )
    self.mb["menu"]  =  self.mb.menu

    self.ONSound  = IntVar()
    self.ONSound.set(1)
    self.OFFSound = IntVar()
    self.OFFSound.set(0)

    self.mb.menu.add_checkbutton ( label="ONSound", variable=self.ONSound, command = self.turnON(), onvalue=1,offvalue=0)
    self.mb.menu.add_checkbutton ( label="OFFSound", variable=self.OFFSound, command = self.turnOFF(), onvalue=1,offvalue=0)

def turnON(self):
    self.ONSound.set(1)
    self.OFFSound.set(0)

def turnOFF(self):
    self.ONSound.set(0)
    self.OFFSound.set(1)

我的目标是打开这两个复选按钮来打开和关闭声音,并且在这样做的过程中,这些复选按钮中的一个只能一次 on/off。目前此效果不起作用,我已经查看我的代码一个小时了,但找不到问题所在。当我的完整程序是 运行 时,一切都会显示出来,但是这个 ON/OFF 开关不能按我想要的方式工作。

感谢所有帮助, 谢谢

问题是您将 command 设置为函数调用而不是函数引用。这使得函数 运行 一次并将 return 值 (None) 分配给 command。您应该删除函数名称后的括号。


做两个只能选一个,为什么不做radiobuttons?那么就这么简单

self.Sound  = IntVar()

self.mb.menu.add_radiobutton(label= "ONSound", variable=self.Sound, value=1)
self.mb.menu.add_radiobutton(label="OFFSound", variable=self.Sound, value=0)