2017-11-07 49 views
1

TkInterの複数のグループを持つ設定ウィンドウを作成しようとしていますRadiobuttonです。彼らは私が後で作業することができるテキスト変数を変更する必要があります。Tkinter複数のラジオボタングループ

私は、次のコードを持っている:

# radiobutton group 1 
settingSort = "" 
settingSortRadio1 = tkinter.Radiobutton(settingsWindow, text="Frequency", variable=settingSort, value="freq") 
settingSortRadio1.select() 
settingSortRadio1.pack() 
settingSortRadio2 = tkinter.Radiobutton(settingsWindow, text="Alphabetical", variable=settingSort, value="alpha") 
settingSortRadio2.pack() 

#radiobutton group 2 
settingAnalyseRadio1 = tkinter.Radiobutton(settingsWindow, text="Word frequency", variable=settingAnalyse, value="wfreq") 
settingAnalyseRadio1.select() 
settingAnalyseRadio1.pack() 
settingAnalyseRadio2 = tkinter.Radiobutton(settingsWindow, text="Letter frequency", variable=settingAnalyse, value="lfreq") 
settingAnalyseRadio2.pack() 

をしかし、これらのボタンはすべて、まだ同じグループの一部であるように見えます。グループ1のボタンを選択すると、ウィンドウ内の他のすべてのボタン(グループ2を含む)が選択解除され、その逆も同様です。

どうすればこの問題を解決できますか?

答えて

1

あなたがしたことの代わりにvariable classを使用する必要があるため、これは機能しません。あなたの特定のニーズに応じて

settingSort = tkinter.StringVar() 

その後you need to initializesettingSort

settingSort = "" 

へ:私は意味

は、あなたがこの行を変更する必要があります。

0

これは、tkinterの組み込み変数クラスを使用していないためです。

あなたは、以下のような何かをする必要があります。

from tkinter import * 

root = Tk() 

var1 = StringVar() 
var2 = StringVar() 

var1.set(0) 
var2.set(0) 

Radiobutton(root, text = "group1", variable = var1, value = 0).pack() 
Radiobutton(root, text = "group1", variable = var1, value = 1).pack() 
Radiobutton(root, text = "group2", variable = var2, value = 0).pack() 
Radiobutton(root, text = "group2", variable = var2, value = 1).pack() 

root.mainloop() 

だが理解しやすいように、これを分解してみましょう。

var1 = StringVar() 
var2 = StringVar() 

上記のように、2つの変数を作成します(StringVar())。あなたが気にする必要がある限り、これらは特定のウィジェットの値をそれ自体の中に格納する「コンテナ」です。 2つの異なるグループRadiobuttonウィジェットがあるため、2つ作成します。我々は(我々が初期化しようとしている)各グループの最初のRadiobuttonウィジェットの値と同じになるようにStringVar()変数の値を設定する上

var1.set(0) 
var2.set(0) 

。つまり、Radiobuttonが描画されると、デフォルトで各グループの最初のグループが選択されます。

Radiobutton(root, text = "group1", variable = var1, value = 0).pack() 
Radiobutton(root, text = "group1", variable = var1, value = 1).pack() 
Radiobutton(root, text = "group2", variable = var2, value = 0).pack() 
Radiobutton(root, text = "group2", variable = var2, value = 1).pack() 

上記では、Radiobuttonウィジェットを初期化しています。我々は(グループ2ためグループ1var2ためvar1)各グループに関連付けられた変数クラスを割り当てるために各Radiobuttonvariable属性を使用し、我々は値を割り当てることvalue属性を使用することRadiobutton Sべき"関連する変数に「」を格納します。

これは、私たちは他の「グループ」の独立した2つの変数を更新することができます2 「グループ」で4 Radiobutton Sを作成することができます。

関連する問題