본문 바로가기
GUI 튜토리얼/tkinter 한꼬집씩만 따라해보기

16. 체크박스에 함수 붙여보기

by 일코 2022. 11. 16.

지난 포스팅

지난 포스팅에서는 체크버튼을 생성하고, 상태값을 초기화하는 방법에 대해 설명드렸습니다.

2022.11.16 - [기타/tkinter 한꼬집씩만 따라해보기] - 15. 체크버튼에 기본값 부여하기(선택상태)

 

15. 체크버튼에 기본값 부여하기(선택상태)

지난 포스팅 지난 포스팅에서는 tkinter의 체크버튼에 대해 간단히 알아보았습니다. 2022.11.16 - [기타/tkinter 한꼬집씩만 따라해보기] - 14. 체크박스 버튼 만들기 14. 체크박스 버튼 만들기 지난 포스

martinii.fun


 

이번 포스팅에서는 : 체크버튼에 함수 붙이기

미리 솔직히 말씀드리면, 여러분이 앞으로 만들게 될 다양한 GUI에서

체크버튼에 함수가 붙을 일은 거의 없을 것입니다.

그냥 체크버튼의 선택값을 가져다가 어플리케이션에서 사용하는 게 대부분일 것입니다.

그럼에도 이번 포스팅을 굳이 넣은 이유는,

이만큼 간편하면서도 강력한 인터랙션을 구현할 수 있다는 걸 강조하고 싶어서입니다..

아래에 코드를 보여드리겠습니다. 체크박스의 상태에 따라 레이블이 바뀌는 GUI입니다.

import tkinter as tk


def click():
    if selected.get():
        label.configure(text=f"체크버튼을 선택하셨습니다.")
    else:
        label.configure(text=f"체크버튼을 해제하셨습니다.")

win = tk.Tk()

selected = tk.BooleanVar()

label = tk.Label(win, text="체크버튼 미선택 상태입니다.")
label.grid(row=0, column=0)

check = tk.Checkbutton(win, text="체크버튼", variable=selected, command=click)
check.grid(row=1, column=0, sticky="w")

win.mainloop()
설명이 그리 길지는 않겠지만, 아래의 설명을 읽다가도 틈틈이 코드로 돌아와서 맥락을 확인해주시기 바랍니다.

이번 예제에서는 튜토리얼에서 처음 쓰인 tk.BooleanVar 자료형을 사용해보았습니다.

체크버튼이 True와 False 두 개의 값만 가지기 때문입니다. 혹은

Checkbutton 인스턴스를 생성할 때, onvalue와 offvalue 인자를 통해

상태값을 정수나 문자열로도 바꿀 수 있습니다.

다만, 가능하면 BooleanVar를 이용하실 것을 추천드립니다.
예를 들어 체크버튼 생성시 tk.Checkbutton(~, onvalue="on", offvalue="off") 라고 지정하는 경우
선택해제상태의 값인 "off"가 False가 아닌 관계로,
의도치 않게 체크버튼이 선택된 채로 GUI창이 시작됩니다.

 

이번에 생성한 콜백함수는 지난 시간에 다뤘던 콤보박스에서의 콜백함수 예제와 많이 닮아 있습니다.

checkbutton.get() 메서드를 통해 체크박스의 상태값을 확인하고 if문으로 각기 다른 문장을 레이블에 넣는 내용입니다.

자꾸 무의식중에 checkbox와 checkbutton을 혼용하게 되는데, tkinter를 제외한 대부분의 GUI 프레임워크에서는 해당 위젯을 체크박스라고 부릅니다. tkinter에서만은 예외적으로 체크버튼이라고 부르는데, 저도 익숙해지질 않네요..

 

실행해보면

다음 포스팅에서는 잠시 위젯소개를 멈추고, 위젯을 정렬하는 sticky 인자에 대해 알아볼 예정입니다.

 


다음 포스팅

이어지는 포스팅에서는 위젯을 정렬하는 sticky와, 도전과제로 columnspan을 다룹니다.

2022.11.16 - [기타/tkinter 한꼬집씩만 따라해보기] - 17. sticky로 위젯 정렬하기 #도전과제

 

17. sticky로 위젯 정렬하기 #도전과제

지난 포스팅 지난 포스팅에서는 체크박스 및 체크박스의 상태 초기화, 체크박스 command에 함수를 붙여보는 연습을 했습니다. 2022.11.16 - [기타/tkinter 한꼬집씩만 따라해보기] - 16. 체크박스에 함수

martinii.fun

 

댓글