2012-01-29 175 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不對應任何單選按鈕,所以不會選擇任何單選按鈕。