Python tkinter Checkbutton 위젯에 대해 살펴보겠습니다.
Checkbutton은 여러 옵션들 중 다중 선택하기 위한 체크 버튼 위젯입니다.
Checkbutton 만들기
Checkbutton은 tkinter 에 Checkbutton(window) 함수로 생성합니다.
매개변수로 Checkbutton이 출력될 window를 넣어줘야 합니다.
import tkinter
win = tkinter.Tk();
# Checkbutton 생성
chkBtn1 = tkinter.Checkbutton(win, text='1번 Option');
chkBtn2 = tkinter.Checkbutton(win, text='2번 Option');
chkBtn.config(foreground='blue');
chkBtn1.pack();
chkBtn2.pack();
win.mainloop();
옵션은 다른 위젯들 처럼 생성하면서 파라미터로 설성 또는 config() 함수로 설정할 수 있습니다.
Checkbutton 이 가장 많이 쓰여지는 예를 보겠습니다.
Checkbutton은 여러옵션들중 선택된 것을 확인해야 하므로 체크 버튼이 선택되었는지 여부를
variable 속성을 통해 변수에 담겠습니다.
import tkinter
win = tkinter.Tk();
# Checkbutton 설정값 저장할 변수
chkVal1 = tkinter.BooleanVar();
chkVal2 = tkinter.IntVar();
# Checkbutton 생성
chkBtn1 = tkinter.Checkbutton(win, text='1번 Option');
chkBtn2 = tkinter.Checkbutton(win, text='2번 Option');
# Checkbutton 에 저장할값 변수들 연결
chkBtn1.config(variable = chkVal1);
chkBtn2.config(variable = chkVal2);
def btnStatus1(event):
print(chkVal1.get());
def btnStatus2(event):
print(chkVal2.get());
# Checkbutton 클릭시 이벤트 연결
chkBtn1.bind('<Button-1>', btnStatus1);
chkBtn2.bind('<Button-1>', btnStatus2);
chkBtn1.pack();
chkBtn2.pack();
# chkBtn1 클릭시 체크된상태값에따라 True, False 출력
# chkBtn2 클릭시 체크된상태값에따라 1, 0 출력
win.mainloop();
Checkbutton 에 variable 속성을 통해 상태 값을 연결할 변수를 설정합니다.
해당 변수로 선택되었는지 아닌지 여부를 출력할 수 있습니다.
( 아래쪽 옵션참조 : variable에 들어가는 변수는 필히 tkinter.IntVar() 또는 tkinter.BooleanVar() 여야함 )
해당 함수로 생성된 변수는 container 이기 때문에 get() 함수로 값을 빼내서 출력해야 합니다.
Checkbutton의 값을 가지고 원하는 작업을 할때 참조하면 될 것 같습니다.
Checkbutton의 함수들
이름 | 기능 |
select() | 상태를 체크로 변경 |
deselect() | 상태를 해제로 변경 |
toggle() | 상태 토글 ( 체크이면 >> 해제, 해제이면 >> 체크 ) |
invoke() | 해당 Checkbutton을 클릭한것과 같은 실행 |
flash() | 깜빡임 ( normal 상태 배경과 active 상태 배경 교차 ) |
Checkbutton의 옵션들
1. Checkbutton의 동작 관련
이름 | 기능 | 기본값 | 속성 |
state | Checkbutton의 상태 설정 | normal | normal, active, disabled |
command | Checkbutton이 active 상태일 때 실행할 함수 | 함수 | |
variable | Checkbutton의 상태를 저장할 변수 | tkinter.IntVar() tkinter.BooleanVar() |
|
takefocus | Tab키로 위젯 이동 허용여부 | True | Boolean |
onvalue | Checkbutton이 선택된 상태일때 연결된 변수의 값 ( variable로 설정된 변수 ) |
True | Boolean |
offvalue | Checkbutton이 해제된 상태일때 연결된 변수의 값 ( variable로 설정된 변수 ) |
False | Boolean |
indicatoron | Checkbutton의 위젯 일치화 여부 | True | Boolean |
2. Checkbutton의 문자열 관련
이름 | 기능 | 기본값 | 속성 |
text | Checkbutton에 출력할 문자열 | ||
textvariable | Checkbutton에 출력할 문자열변수 | 변수 | |
anchor | Checkbutton내 문자열 또는 이미지의 위치 | center | center, se, s, sw, w, nw, n, ne, e |
justify | Checkbutton내 문자열 정렬 | center | center, left, right |
wraplength | Checkbutton내 자동 줄내림 설정 넓이 | 0 | 숫자 |
font | Checkbutton내 문자열 글꼴 | TkDefaultFont | font |
3. Checkbutton의 이미지 관련
이름 | 기능 | 기본값 | 속성 |
image | Checkbutton내 출력할 이미지 | ||
bitmap | Checkbutton내 출력할 기본이미지 | info, error, warning, questheade, question, hourglass, gray75, gray50, gray25 | |
selectimage | Checkbutton이 체크상태일때 출력할 이미지 | ||
compound | Checkbutton 내 문자열과 이미지가 동시에있을때 이미지의 위치 | none | top, center, bottom, left, right, none |
4. Checkbutton의 디자인 관련
이름 | 기능 | 기본값 | 속성 |
width | Checkbutton의 길이 | 0 | 숫자 |
height | Checkbutton의 높이 | 0 | 숫자 |
relief | Checkbutton의 테두리 설정 | flat | flat, raised, groove, ridge, sunken, solid |
overrelief | Checkbutton의 테두리 설정 (마우스를 올렸을 때) | raised | flat, raised, groove, ridge, sunken, solid |
foreground | Checkbutton의 문자열 색상 | SystemButtonFace | color |
background | Checkbutton의 배경 색상 | SystemButtonFace | color |
selectcolor | 선택된 Checkbutton의 배경 색상 | SystemWindow | color |
padx | Checkbutton내 가로 여백 ( padding ) | 1 | 숫자 |
pady | Checkbutton내 세로 여백 ( padding ) | 1 | 숫자 |
cursor | Checkbutton내 마우스 커서 설정 | pointer, arrow등 cursor속성 | |
activeforground | active 상태일때 Checkbutton의 문자열 색상 | SystemButtonText | color |
activebackground | active 상태일때 Checkbutton의 배경 색상 | SystemButtonFace | color |
disabledforeground | disabled 상태일때 Checkbutton의 문자열 색상 | SystemDisabledText | color |
highlightcolor | Checkbutton이 선택되었을때 하이라이트 색상 | SystemWindowFrame | color |
highlightbackground | Checkbutton이 선택되지 않았을때 하이라이트 색상 | SystemButtonFace | color |
highlightthickness | Checkbutton이 선택되었을때 하이라이트 두께 | 0 | 숫자 |