两个用于切换声音的复选按钮无法正常工作
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)
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)