2017-11-07 4 views
1

TkInter의 여러 그룹으로 설정 창을 만들려고합니다. Radiobutton s. 그들은 나중에 작업 할 수있는 텍스트 변수를 수정해야합니다.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() 

그래서 위의 두 변수는 두 개의 StringVar() 변수를 만듭니다. 당신이 염려 할 필요가있는 한, 이것들은 단지 "containers"이며, 그 안에는 특정 위젯의 값을 저장합니다. 두 개의 서로 다른 그룹Radiobutton 위젯이 있기 때문에 두 개를 만듭니다. 우리는 (우리는 초기화하려고 것) 각 그룹의 제 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 군에 대한 1 군var2에 대한 var1) 각 그룹과 관련된 변수 클래스를 지정하기 위해 각 Radiobuttonvariable 속성을 사용하고 우리가 값을 할당 할 value 속성을 사용하여 그 Radiobutton의해야 " 관련 변수에을 저장하십시오.

이것은 우리가 다른 "그룹"의 독립적 인 두 개의 변수를 업데이트 할 수 있습니다 2 "그룹" 4 개 Radiobutton의를 만들 수 있습니다.