2017-04-26 6 views
0

私はPythonでアプリケーションを作成しようとしています。たいていの場合、最初のラジオボタンを除くすべてのラジオボタンが選択されています。最初のラジオボタンは、ホバリング後に選択されています。これは10回中9回発生し、意図したとおりに動作することに注意してください。実行時にtkinterのラジオボタンが既に選択されています

コードは以下のとおりです。 EDIT:コードがリサイクルされました。私はそれがコピー貼り付け中に消えたと思います。ごめんなさい!

import sys 
from Tkinter import * 

i = 0 
#for i in range(0, 10): 
# print i 

macro_sheet_names = [1, 2, 3, 4] 
print len(macro_sheet_names) 

root = Tk() 
var = IntVar() 

def sel(): 
    selection = "You selected the option " + str(var.get()) 
    label.config(text = selection) 
    print ('Tab selected: ' + str(var.get())) 
    root.destroy() 
# sys.exit() 
# root.withdraw() 

i = 0 
for i in range (0, len(macro_sheet_names)): 
    R = Radiobutton(root, text = macro_sheet_names[i], variable = var, value = i, command = sel) 
    R.pack(anchor = W) 


label = Label(root) 
label.pack() 
root.mainloop() 

print ('Exiting...') 
sys.exit() 
+2

あなたのインデントがオフです - それを修正してください。 – asongtoruin

+0

それは奇妙です。インデントエラーを修正すると、コードは期待通りに動作します。あなたはターミナルやIDLEやその他のIDEの中で直接実行していますか? –

+0

こんにちは、問題の固定インデント。まだ同じように行動しています。 – Yashvardhan

答えて

1

私の場合は、修正を加えてPython 3で動作します。試してみてください:

import sys 
from Tkinter import * 

i = 0 
#for i in range(0, 10): 
# print i 

macro_sheet_names = [1, 2, 3, 4] 
print (len(macro_sheet_names)) 

root = Tk() 
var = IntVar() 

def sel(): 
    selection = "You selected the option " + str(var.get()) 
    label.config(text = selection) 
    print ('Tab selected: ' + str(var.get())) 
    root.destroy() 
    # sys.exit() 
    # root.withdraw() 

i = 0 
for i in range (0, len(macro_sheet_names)): 
    R = Radiobutton(root, text = macro_sheet_names[i], variable = var, value = i, command = sel) 
    if i == 0: R.select() 
    R.pack(anchor = W) 


label = Label(root) 
label.pack() 
root.mainloop() 

print ('Exiting...') 
sys.exit() 

これは、最初のラジオボックスを自動的に選択するだけです。

+0

なぜあなたは 'var.set(0)'を使わないでしょうか? – asongtoruin

+0

ねえ、うまくいった!プログラムは、ほとんどの場合、「終了...」を印刷して終了しませんが。そこに何が間違っているのか理解してもらえますか? – Yashvardhan

+0

あなたは何が変わったのかを知るのは難しいです。あなたはそのことを強調してもらえますか? – zondo

関連する問題