2012-01-29 171 views
1

我在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个单选按钮)。请帮我理解我如何解决这个问题。

我试图摧毁单选按钮,并用相同的配置值重新声明它,但被销毁并再次出现黑色子弹(即选中)。

在此先感谢。

回答

1

Radibuttons的设计应该始终选择一个集合中的一个。这种行为是用户期望的。根据定义,辐射按钮意味着“恰恰从这一组中选择一个”。在你的具体情况下,按钮意味着“是”或“否”,所以没有第三选择。布尔值只能是两种选择之一。没有什么坏处,为用户选择一个作为默认设置(除非可能,您正在编写核反应堆或医疗设备的软件)。如果您取消选择全部,则默认情况下100%是错误的。如果你选择两个值中的任何一个,你至少会猜测一半的时间。

通常,如果您确实希望用户能够选择任何选项,请添加一个“未知”选项。

2

我刚刚测试并发现,如果将variable的值设置为与任何单选按钮的参数value不对应的值,则按钮显示为未选中。因此,如果您的三个单选按钮分别将self.var设置为0,1和2,则可以使其不会选择self.var.set(3)。由于3不对应任何单选按钮,所以不会选择任何单选按钮。