取消选择单选按钮
问题描述:
我在Windows 7,Python 2.6,Tkinter下工作。取消选择单选按钮
我需要帮助来取消每次用户选择一个GUI时单选按钮。我在同一组中有三个单选按钮和一个重置按钮。当用户选择重置按钮时,需要取消选择所有单选按钮。
这是单选按钮的声明:
self.Rb1 = Radiobutton (self.parent, text = 'Is this a required pre_action to the next step?', variable = self.var, value = 1)
self.Rb1.place (x = 100, y= 400)
并绑定到命令OnReset按钮“重置”:
def OnReset(self):
self.v1.set("Organ")
self.v2.set("Instrument")
self.v3.set("Surgical Action")
self.Rb1.deselect()
但.deselect()
方法不清除黑色子弹从这个小部件!它选择所有的单选按钮(我在GUI中有3个单选按钮)。请帮我理解我如何解决这个问题。
我试图摧毁单选按钮,并用相同的配置值重新声明它,但被销毁并再次出现黑色子弹(即选中)。
在此先感谢。
答
Radibuttons的设计应该始终选择一个集合中的一个。这种行为是用户期望的。根据定义,辐射按钮意味着“恰恰从这一组中选择一个”。在你的具体情况下,按钮意味着“是”或“否”,所以没有第三选择。布尔值只能是两种选择之一。没有什么坏处,为用户选择一个作为默认设置(除非可能,您正在编写核反应堆或医疗设备的软件)。如果您取消选择全部,则默认情况下100%是错误的。如果你选择两个值中的任何一个,你至少会猜测一半的时间。
通常,如果您确实希望用户能够选择任何选项,请添加一个“未知”选项。
答
我刚刚测试并发现,如果将variable
的值设置为与任何单选按钮的参数value
不对应的值,则按钮显示为未选中。因此,如果您的三个单选按钮分别将self.var
设置为0,1和2,则可以使其不会选择self.var.set(3)
。由于3不对应任何单选按钮,所以不会选择任何单选按钮。