2013-05-13 29 views
0

我正在使用tkinter編寫腳本,但發生了一些奇怪的事情。Radibuttons正在修改錯誤的值tkinter

我有兩個單選按鈕:

way=False 
RadioButton0=Radiobutton(root,text="From",variable=way,value=False) 
RadioButton1=Radiobutton(root,text="To",variable=way,value=True) 
RadioButton0.grid(column=0,row=2) 
RadioButton1.grid(column=1,row=2) 

和文本輸入字段:

entryValue=0 
entryField=Entry(root,textvariable=entryValue) 
entryField.grid(column=0,row=4) 

當我在輸入字段中輸入0RadioButton0被自動選中,當我進入1RadioButton1選擇對於任何其他值,它們都會被選中... 反之亦然:當我選擇RadioButton0時,輸入字段更改爲0,並且當我選擇RadioButton1時,輸入字段更改爲1 ...此外,entryValue稍後將被視爲0。變量way只能通過單選按鈕修改...

爲什麼會發生這種情況?我在做我不應該做的事嗎?我該如何解決它?

回答

1

您可以使用命令來調用方法並設置值。請參閱附件代碼。

def sel(): 
    selection = "You selected the option " + str(var.get()) 
    label.config(text = selection) 


root = Tk() 
frame = Frame(root) 
frame.pack() 

labelframe = LabelFrame(frame, text="This is a LabelFrame") 
labelframe.pack(fill="both", expand="yes") 


var = IntVar() 
R1 = Radiobutton(labelframe, text="Option 1", variable=var, value=1, 
        command=sel) 
R1.pack(anchor = W) 

R2 = Radiobutton(labelframe, text="Option 2", variable=var, value=2, 
        command=sel) 
R2.pack(anchor = W) 

R3 = Radiobutton(labelframe, text="Option 3", variable=var, value=3, 
        command=sel) 
R3.pack(anchor = W) 


label = Label(labelframe) 
label.pack() 
+0

我真的不知道爲什麼此代碼的工作和我沒有,但非常感謝。 .. – Mirac7 2013-05-13 20:38:28

+0

這個例子是否真的回答了這個問題? – 2013-05-13 20:42:38

3

variabletextvariable既要不同variable objects,而不僅僅是內置數據類型:

way=BooleanVar(root) 
way.set(False) 
# ... 
entryValue=StringVar(root) 
entryValue.set("0")