본문 바로가기

tkinter

[파이썬 tkinter] checkbutton 사용하기

반응형

 

안녕하세요.

파이썬을 공부하는 가정의학과 전문의

닥터 배도사입니다. 

 

오늘은 python gui

tkinter의 체크버튼 기능을 알아보도록 하겠습니다. 

 

파이썬 체크 버튼

 

체크 버튼은 위의 사진에서 보시는 바와 같이

사과, 딸기, 배라는 글자 앞에 있는 네모난 상자를 말합니다. 

 

예를 들어,

"과일을 선택하세요"라는 질문에

사과를 선택하려면 사과 앞에 있는 체크 버튼을 클릭하고

딸기를 선택하려면 딸기 앞에 있는 체크버튼을 클릭 하는 것입니다.  

 

그럼 파이썬 tkinter 모듈을 사용하여

원하는 과일(예를 들어 "사과") 앞의 체크 버튼을 클릭하면 

 "사과를 선택하였습니다."

라는 문구가 나오는 프로그램을 만들어 보겠습니다. 

 

import tkinter as tk
from tkinter import *

win = tk.Tk()
win.title("python_GUI_Checkbutton")
win.geometry("600x400")

# 버튼을 클릭하면
# "(선택한 체크버튼의 과일)을 선택하였습니다." 라는 문구가
# 출력되도록 하는 함수 설정.

def fruit_chk():
    if ChkVar1.get() == 1:
        lb2.configure(text = "사과를 선택하였습니다.")
    elif ChkVar2.get() == 1:
        lb2.configure(text = "딸기를 선택하였습니다.")
    elif ChkVar3.get() == 1:
        lb2.configure(text = "배를 선택하였습니다.")

# "과일을 선택하세요."라는 텍스트를 가진 
# 라벨 만들기

lb1 = tk.Label(win, text = "과일을 선택하세요.", bg = "yellow")
lb1.grid(row= 0, column = 0, columnspan = 3)

# "사과", "딸기", "배" 라는 텍스트를 가진 
# 체크버튼 만들기

ChkVar1 = tk.IntVar()
chk1 = tk.Checkbutton(win, text ="사과", variable = ChkVar1)
chk1.grid(row=1, column=0, sticky = "w")

ChkVar2 = tk.IntVar()
chk2 = tk.Checkbutton(win, text ="딸기", variable = ChkVar2)
chk2.grid(row=1, column=1, sticky = "w")

ChkVar3 = tk.IntVar()
chk3 = tk.Checkbutton(win, text ="배", variable = ChkVar3)
chk3.grid(row=1, column=2, sticky = "w")

# 결과물이 출력되는(현재는 비어있는) 라벨 만들기

lb2 = tk.Label(win)
lb2.grid(row=2, column = 0, sticky = "w", columnspan = 3)

# 체크버튼을 선택한 후 클릭하면
# 함수가 실행되는 버튼 만들기

btn1 = tk.Button(win, text = "선택", command = fruit_chk)
btn1.grid(row=1, column=3, sticky = "w")

win.mainloop()

 

프로그램의 전반적인 코드는 다음과 같습니다. 

그럼 하나 하나 자세히 알아보도록 하겠습니다. 

 

import tkinter as tk
from tkinter import *

win = tk.Tk()
win.title("python_GUI_Checkbutton")
win.geometry("600x400")

 

win = tk.Tk()

win 창을 만듭니다. 

 

win.title("python_GUI_Checkbutton")

타이틀을 python_GUI_Checkbutton로 설정합니다. 


win.geometry("600x400")

크기를 600x400으로 설정합니다. 

 

# 버튼을 클릭하면
# "(선택한 체크버튼의 과일)을 선택하였습니다." 라는 문구가
# 출력되도록 하는 함수 설정.

def fruit_chk():
    if ChkVar1.get() == 1:
        lb2.configure(text = "사과를 선택하였습니다.")
    elif ChkVar2.get() == 1:
        lb2.configure(text = "딸기를 선택하였습니다.")
    elif ChkVar3.get() == 1:
        lb2.configure(text = "배를 선택하였습니다.")

 

def fruit_chk():

fruit_chk라는 함수를 정의합니다. 

 

    참고로 체크버튼을 클릭하면 해당 변수는 1

    클릭하지 않으면 해당 변수는 0이 할당됩니다. 


    if ChkVar1.get() == 1:
        lb2.configure(text = "사과를 선택하였습니다.")

   만약 체크버튼1(chk1)을 클릭하여

   체크버튼1의 변수(ChkVar1)가 1이 되면 

   라벨2(lb2)에 "사과를 선택하였습니다."가 출력됩니다. 

    

    elif ChkVar2.get() == 1:
        lb2.configure(text = "딸기를 선택하였습니다.")

    그렇지 않고 만약 체크버튼2(chk2)을 클릭하여

    체크버튼2의 변수(ChkVar2)가 1이 되면 

    라벨2(lb2)에 "딸기를 선택하였습니다."가 출력됩니다. 


    elif ChkVar3.get() == 1:
        lb2.configure(text = "배를 선택하였습니다.")

    그렇지 않고 만약 체크버튼3(chk3)을 클릭하여

    체크버튼2의 변수(ChkVar3)가 1이 되면 

    라벨2(lb2)에 "배를 선택하였습니다."가 출력됩니다. 

 

# "과일을 선택하세요."라는 텍스트를 가진 
# 라벨 만들기

lb1 = tk.Label(win, text = "과일을 선택하세요.", bg = "yellow")
lb1.grid(row= 0, column = 0, columnspan = 3)

 

lb1 = tk.Label(win, text = "과일을 선택하세요.", bg = "yellow")

"과일을 선택하세요."라는 텍스트를 가진 라벨 1(lb1)을 만듭니다. 

배경색은 yellow로 지정해 줍니다. 


lb1.grid(row= 0, column = 0, columnspan = 3)

lb1을 0행, 0열에 위치시키고 열을 3개 합칩니다. 

행을 3개 합치는 이유는 1행에 열이 3개가 나오기 때문입니다.

 

# "사과", "딸기", "배" 라는 텍스트를 가진 
# 체크버튼 만들기

ChkVar1 = tk.IntVar()
chk1 = tk.Checkbutton(win, text ="사과", variable = ChkVar1)
chk1.grid(row=1, column=0, sticky = "w")

ChkVar2 = tk.IntVar()
chk2 = tk.Checkbutton(win, text ="딸기", variable = ChkVar2)
chk2.grid(row=1, column=1, sticky = "w")

ChkVar3 = tk.IntVar()
chk3 = tk.Checkbutton(win, text ="배", variable = ChkVar3)
chk3.grid(row=1, column=2, sticky = "w")

 

ChkVar1 = tk.IntVar()
chk1 = tk.Checkbutton(win, text ="사과", variable = ChkVar1)
chk1.grid(row=1, column=0, sticky = "w")

'사과'라는 텍스트를 가진 체크버튼1(chk1)을 만들어 줍니다. 

이때 변수는 ChkVar1로 지정하고 Int형으로 지정해 줍니다. 

만약 chk1을 클릭하면 변수 ChkVar1은 1이 되고 

클릭하지 않는다면 변수 ChkVar1은 0이 됩니다. 

chk1의 위치를 1행, 0열로 배치해 주고 왼쪽 정열을 해 줍니다. 


ChkVar2 = tk.IntVar()
chk2 = tk.Checkbutton(win, text ="딸기", variable = ChkVar2)
chk2.grid(row=1, column=1, sticky = "w")

 

'딸기'라는 텍스트를 가진 체크버튼2(chk2)을 만들어 줍니다. 

이때 변수는 ChkVar2로 지정하고 Int형으로 지정해 줍니다. 

만약 chk2을 클릭하면 변수 ChkVar2은 1이 되고 

클릭하지 않는다면 변수 ChkVar2은 0이 됩니다. 

chk1의 위치를 1행, 1열로 배치해 주고 왼쪽 정열을 해 줍니다. 


ChkVar3 = tk.IntVar()
chk3 = tk.Checkbutton(win, text ="배", variable = ChkVar3)
chk3.grid(row=1, column=2, sticky = "w")

 

'배'라는 텍스트를 가진 체크버튼3(chk3)을 만들어 줍니다. 

이때 변수는 ChkVar3로 지정하고 Int형으로 지정해 줍니다. 

만약 chk3을 클릭하면 변수 ChkVar3은 1이 되고 

클릭하지 않는다면 변수 ChkVar3은 0이 됩니다. 

chk3의 위치를 1행, 2열로 배치해 주고 왼쪽 정열을 해 줍니다.

 

# 결과물이 출력되는(현재는 비어있는) 라벨 만들기

lb2 = tk.Label(win)
lb2.grid(row=2, column = 0, sticky = "w", columnspan = 3)

 

lb2 = tk.Label(win)
lb2.grid(row=2, column = 0, sticky = "w", columnspan = 3)

체크 버튼을 클릭하고 버튼을 눌렀을 때

결과가 출력될 비어있는 라벨(lb2)을 만들고 2행, 0열에 위치시킵니다. 

왼쪽 정열을 하고 열 3개를 합치도록 위치시킵니다. 

 

# 체크버튼을 선택한 후 클릭하면
# 함수가 실행되는 버튼 만들기

btn1 = tk.Button(win, text = "선택", command = fruit_chk)
btn1.grid(row=1, column=3, sticky = "w")

win.mainloop()

 

btn1 = tk.Button(win, text = "선택", command = fruit_chk)
btn1.grid(row=1, column=3, sticky = "w")

체크버튼을 선택한 후 클릭하면 앞서 정의한 fruit_chk라는 항수가 실행되는 버튼(btn1)을 생성합니다.

1행, 3열에 위치시키고 왼쪽 정열을 합니다. 

 

자~ 그럼 코딩이 완성되었습니다.

실행을 한번 해 볼까요?

 

파이썬 gui tkinter, 체크버튼 사용

 

파이썬 gui tkinter, 체크버튼 사용

 

영상에서 보시듯이 사과를 선택하면

"사과를 선택하였습니다."가

딸기를 선택하면

"딸기를 선택하였습니다."가 출력되는 것을 볼 수 있습니다.

 

간단하지만

그래도 스스로 해냈다는 보람이 있습니다. 

 

배도사의 코딩 도전은 계속될 것입니다~^^

반응형