본문 바로가기
Python/GUI(tkinter)

독학 Python tkinter(GUI) - 13.checkbutton

by To올라운더 2023. 11. 11.
반응형

사실 앞의 포스팅만으로도 충분히 GUI를 구성할 수 있지만,

앞으로 배울 checkbutton이나 radiobutton 등을 함께 배운다면

용도에 맞게 더 적합한 GUI 환경을 구성할 수 있다.

 

1. checkbutton

 - 체크 버튼은 사용자가 고정된 내용이나 기능을 반복적으로 사용하거나 사용 유무를 표기할 때 주로 사용한다.

 - checkbutton 의 경우, 각각 독립적인 상태를 가진다.(다른 checkbutton의 상태에 영향을 받지 않는다.)

from tkinter import *
import tkinter.messagebox as msb
from tkinter import filedialog # 파일 open 기능 사용

root = Tk()
root.title('To올라운드의 알찬 GUI 강의')

def get_checkbutton_stat():
    print(f'check1 의 상태 : {check1_value.get()}')
    print(f'check2 의 상태 : {check2_value.get()}')
    print(f'check3 의 상태 : {check3_value.get()}')


root.geometry("300x200") # 가로 X 세로 / 대문자X 하면 실행안됨

#msb.showinfo('Welcome','안녕하세요. To올라운더와 함께 하는 GUI입니다.')

body_frame = Frame(root, relief='solid', bd=2, background='orange', padx=5, pady=5)
body_frame.pack(fill='both', expand=True)

check1_value = IntVar()
check1_btn = Checkbutton(body_frame, text='문자 보내기', variable=check1_value)
check1_btn.pack()


check2_value = IntVar()
check2_btn = Checkbutton(body_frame, text='SNS 보내기', variable=check2_value)
check2_btn.pack()


check3_value = IntVar()
check3_btn = Checkbutton(body_frame, text='메일 보내기', variable=check3_value)
check3_btn.pack()



get_checkbutton_stat_btn = Button(body_frame, text ='Checkbutton 상태 출력', command=get_checkbutton_stat)
get_checkbutton_stat_btn.pack(fill='x')


quit_btn = Button(body_frame, text='종료', command=quit)
quit_btn.pack(fill='x')


root.resizable(False,False) # x너비, y 변경 허용 여부
root.mainloop()

 

  - checkbutton 의 상태를 확인할 수 있는 get_checkbutton_stat 메서드를 생성하고, 

    해당 매서드를 실행해보면, 문자 보내기, SNS 보내기 등 각각의 checkbutton의 결과가 별도로 유지되는 것을 볼 수 있다.

  - 이렇게 별도의 값을 유지하는 이유는

    하나의 checkbutton 마다 별도의 상태 변수(check1_value, check2_value 등) 을 가지기 때문이다.

    (* 다음 포스팅으로 진행될 radiobutton의 경우 공통의 상태 변수를 가진다.)

 

  - 해당 상태변수 값을 가져 오기 위해서는 check1_value.get() 처럼 get 메서드를 이용해 값을 확인할 수 있다.

 

반응형