2017-02-28 97 views
-1

我有這個python script.I找不到我犯了什麼錯誤。任何人都可以告訴我我在這個程序中犯了什麼錯誤?python tkinter Radiobutton

from tkinter import * 
root=Tk() 
v=IntVar() 
s=IntVar() 
def sel(): 
 x=v.get() 
 if x==1: 
    l2.config(text="correct") 
 else: 
    l2.config(text="wrong") 
  z=s.get() 
  if z==1: 
    l3.config(text="correct") 

 else: 
    l3.config(text="wrong") 
l=Label(root,text="what is 2 + 2 ?") 
l.pack(anchor=W) 
R1=Radiobutton(root,text="4",variable=v,value=1) 
R1.pack(anchor=W) 
R2=Radiobutton(root,text="5",variable=v,value=2) 
R2.pack(anchor=W) 
l2=Label(root) 
l2.pack() 
l2=Label(root,text="what is 5 + 9?") 
l2.pack(anchor=W) 
R3=Radiobutton(root,text="14",variable=s,value=1) 
R3.pack(anchor=W) 
R4=Radiobutton(root,text="5",variable=s,value=2) 
R4.pack(anchor=W) 
l3=Label(root) 
l3.pack() 
root.mainloop() 
+0

什麼是你的計劃的目標是什麼? –

+0

我想在每個問題後打印標籤「寫/錯」..但它不打印當我點擊單選按鈕 – Satish17

+1

爲什麼你認爲單選按鈕知道單擊時要調用哪個函數? –

回答

0

提供的源代碼是Radiobutton和其管理選擇Radiobutton功能sel()之間缺失的環節。其他的誤解和錯誤的聲明阻礙了「正確/錯誤」的顯示。

錯誤1 - 要管理Radiobutton更改,每個控件都應與檢查功能鏈接。

要調用函數sel(),請在每個Radiobutton上添加command

R1=Radiobutton(root,text="4",variable=v,value=1,command = lambda : sel()) 
... 
R2=Radiobutton(root,text="5",variable=v,value=2,command = lambda : sel()) 
... 
R3=Radiobutton(root,text="14",variable=s,value=1,command = lambda : sel()) 
... 
R4=Radiobutton(root,text="5",variable=s,value=2,command = lambda : sel()) 

錯誤2 - 在sel()功能,檢查value,而不是使用簡單的if-else

在每個Radiobutton更改時調用函數sel()。如果沒有選擇 Radiobutton,返回的值InVar()0

def sel(): 
    x=v.get() 
    if x==1: # value of R1 
     l2.config(text="correct") 
    elif x==2: # value of R2 
     l2.config(text="wrong") 
    z=s.get() 
    if z==1: # value of R3 
     l3.config(text="correct") 
    elif z==2: # value of R4 
     l3.config(text="wrong") 

錯誤3 - 變量l2用於顯示的第一個問題的「正確/錯誤」,並顯示了第二個問題。

重命名sel()功能的第二l2lQ2以防止改變。

R2=Radiobutton(root,text="5",variable=v,value=2,command = lambda : sel()) 
R2.pack(anchor=W) 
l2=Label(root) 
l2.pack() 
lQ2=Label(root,text="what is 5 + 9?") 
lQ2.pack(anchor=W) 
R3=Radiobutton(root,text="14",variable=s,value=1,command = lambda : sel()) 
R3.pack(anchor=W)