2017-02-28 9 views
-1

私はこのpythonスクリプトを持っています。私は何のミスも見つけられませんでした。誰でもこのプログラムで何をしたのか教えてください。python tkinterラジオボタン

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

提供されたソースコードはRadiobuttonRadiobuttonを選択し管理する機能sel()との間のリンクが失われています。他の誤解や誤った宣言は、「正しい/間違った」表示を妨げている。

エラー1 - Radiobuttonの変更を管理するには、各コントロールをチェック機能とリンクさせる必要があります。

sel()を呼び出すには、それぞれRadiobuttoncommandを追加します。

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()機能では、代わりにシンプルなif-elseを使用してのvalueをご確認ください。

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は、最初の質問の「正しい/間違った」を表示し、2番目の質問を表示するために使用されます。

sel()機能の変化を防ぐためにlQ2に二l2の名前を変更します。

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)