윈도우 프로그램 기본 위젯

강의노트 Checkbutton

강의노트 • 조회수 716 • 댓글 0 • 작성 1년 전 • 수정 1개월 전  
  • 윈도우 프로그램

체크버튼

체크 버튼은 두 가지 상태 중 하나를 선택할 수 있는 버튼이다. 예를 들어 예(True)/아니오(False) 또는 켜기(Yes)/끄기(No) 등과 같은 버튼을 나타낸다.

두 가지 중 하나를 선택하기 때문에 여러 개를 동시에 선택 가능한 라디오 버튼과의 차이점이다.

체크 버튼은 tkinter와 ttk 모두 제공하고 있다. 사용법과 기능은 유사하다. 하지만 외형 차이 때문에 많은 사용자들은 ttk의 체크버튼을 선호한다.

체크 버튼의 상태를 저장하는 변수 타입은 정수(Intvar), 문자열(StringVar)과 불(BooleanVar)이 가능하다.

문자열 변수는 onvalue값과 offvalue값을 미리 지정해야 한다.

var = tk.StringVar(value="OFF")
check = ttk.Checkbutton(root, text="다크 모드", variable=var, onvalue="ON", offvalue="OFF")  # 선택 시 var.get() → "ON" / "OFF"

예1

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.title("Checkbutton 예제")
root.geometry("250x150")

chk_var = tk.IntVar()  # 1 

check = ttk.Checkbutton(root, text="동의합니다", variable=chk_var)  #1
check.pack(pady=20)

root.mainloop()
  1. 선택 상태 저장 정수형 변수로 1 = 선택, 0 = 해제를 의미한다.
  2. 체크버튼을 만든다.

예2

체크 버튼에 체크하면 알림을 받고 체크하지않으면 알림을 받지 않는다.

레이블에 결과를 출력한다.

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.title("Checkbutton 상태 확인")
root.geometry("250x150")

chk_var = tk.IntVar()

check = ttk.Checkbutton(root, text="알림 받기", variable=chk_var)
check.pack(pady=10)

def check_status():
    if chk_var.get() == 1:
        s = "알림을 받습니다."
    else:
        s = "알림을 받지 않습니다."
    lbl.configure(text=s)

btn = tk.Button(root, text="상태 확인", command=check_status)
btn.pack()

lbl = ttk.Label(root, text="알림 상태 : ")
lbl.pack(pady=5)

root.mainloop()

예3

여러 개의 옵션을 선택하는 프로그램 작성한다.

각 옵션에 변수를 하나씩 대입해야 된다.

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.title("여러 Checkbutton")
root.geometry("250x200")

var1 = tk.IntVar()
var2 = tk.IntVar()
var3 = tk.IntVar()

chk1 = ttk.Checkbutton(root, text="피   자", variable=var1)
chk2 = ttk.Checkbutton(root, text="햄버거", variable=var2)
chk3 = ttk.Checkbutton(root, text="샐러드", variable=var3)

chk1.pack()
chk2.pack()
chk3.pack()

def show_selection():
    result = []
    s = "선택한 음식 : "
    if var1.get() == 1:
        result.append("피자")
    if var2.get() == 1:
        result.append("햄버거")
    if var3.get() == 1:
        result.append("샐러드")
    s1 = ", ".join(result) if result else "없음"
    s= s + s1
    lbl.configure(text=s)

btn = tk.Button(root, text="선택 확인", command=show_selection)
btn.pack(pady=10)
lbl = ttk.Label(root, text="선택한 음식 : ")
lbl.pack(pady=5)

root.mainloop()
import tkinter as tk

window = tk.Tk()
window.title('My Window')
window.geometry('200x200')
 
l = tk.Label(window, bg='white', width=20, text='empty')
l.pack()
 
def print_selection():
    if (var1.get() == 1) & (var2.get() == 0):
        l.config(text='I love Python ')
    elif (var1.get() == 0) & (var2.get() == 1):
        l.config(text='I love C++')
    elif (var1.get() == 0) & (var2.get() == 0):
        l.config(text='I do not anything')
    else:
        l.config(text='I love both')
 
var1 = tk.IntVar()
var2 = tk.IntVar()
c1 = tk.Checkbutton(window, text='Python',variable=var1, onvalue=1, offvalue=0, command=print_selection)
c1.pack()
c2 = tk.Checkbutton(window, text='C++',variable=var2, onvalue=1, offvalue=0, command=print_selection)
c2.pack()
 
window.mainloop()
열 1 열 2 열 3 열 3

예 1)

from tkinter import *

win = Tk() 
win.geometry("300x200")
win.title('CheckBox 예제') 

w = Label(win, text ='Python 수업의 좋은점', font = ('Helvetica', 20, 'bold')) 
w.pack() 

Checkbutton1 = IntVar() 
Checkbutton2 = IntVar() 
Checkbutton3 = IntVar() 

Button1 = Checkbutton(win, text = "쉽다", 
                    variable = Checkbutton1, 
                    onvalue = 1, 
                    offvalue = 0, 
                    height = 2, 
                    width = 20,
                    font=('Arial',16,'bold')) 

Button2 = Checkbutton(win, text = "숙제가 적다", 
                    variable = Checkbutton2, 
                    onvalue = 1, 
                    offvalue = 0, 
                    height = 2, 
                    width = 20) 

Button3 = Checkbutton(win, text = "수업시간이 짧다", 
                    variable = Checkbutton3, 
                    onvalue = 1, 
                    offvalue = 0, 
                    height = 2, 
                    width = 20) 
    
Button1.pack() 
Button2.pack() 
Button3.pack() 

win.mainloop() 
이전 글
다음 글
댓글
댓글로 소통하세요.