1. 체크박스 (Checkbutton
)
체크박스는 사각형 버튼 형태로, 선택하거나 선택 해제할 수 있어. 사용자가 제공된 여러 옵션 중 하나 또는 여러 개를 선택할 수 있을 때 유용해.
체크박스 생성
체크박스를 생성하려면 Checkbutton
위젯을 사용해야 해. 체크박스의 상태(체크 여부)를 추적하려면 일반적으로 IntVar
변수를 사용해. 체크박스가 선택되면 1
, 선택 해제되면 0
값을 저장해.
import tkinter as tk
# 체크박스 상태 확인 함수
def show_status():
print("켜짐" if var.get() == 1 else "꺼짐")
# 창 생성
root = tk.Tk()
root.title("체크박스 예제")
# 상태 저장용 변수
var = tk.IntVar()
# 상태를 var 변수에 연결한 체크박스
checkbox = tk.Checkbutton(root, text="옵션 켜기", variable=var, command=show_status)
checkbox.pack(pady=20)
root.mainloop()
코드 설명
-
variable=var
: 체크박스를var
변수에 연결해. 체크박스 상태 변경 시 변수가 업데이트돼. -
함수
show_status()
: 체크박스의 현재 상태를 콘솔에 출력해. 체크박스가 체크되어 있으면 "켜짐", 아니면 "꺼짐"이 출력돼.
여러 체크박스 사용
여러 독립적인 옵션이 필요한 경우, 각각 자신의 변수에 연결된 여러 체크박스를 생성할 수 있어.
# 상태 저장용 변수
option1 = tk.IntVar()
option2 = tk.IntVar()
# 체크박스
check1 = tk.Checkbutton(root, text="옵션 1", variable=option1)
check2 = tk.Checkbutton(root, text="옵션 2", variable=option2)
check1.pack()
check2.pack()
2. 라디오 버튼 (Radiobutton
)
라디오 버튼은 동그란 버튼으로 구성돼 있으며, 사용자에게 여러 옵션 중 하나만 선택하도록 해야 할 때 유용해.
라디오 버튼 생성
라디오 버튼을 생성하려면 Radiobutton
위젯을 사용해. 라디오 버튼을 서로 연결하고 선택을 상호 종속적으로 만들려면 모든 라디오 버튼을 하나의 변수 (IntVar
또는 StringVar
)에 연결해야 해.
# 선택한 옵션 표시 함수
def show_choice():
print(f"선택된 옵션: {choice.get()}")
# 선택 추적용 변수
choice = tk.IntVar()
# 라디오 버튼
radio1 = tk.Radiobutton(root, text="옵션 1", variable=choice, value=1, command=show_choice)
radio2 = tk.Radiobutton(root, text="옵션 2", variable=choice, value=2, command=show_choice)
radio3 = tk.Radiobutton(root, text="옵션 3", variable=choice, value=3, command=show_choice)
radio1.pack()
radio2.pack()
radio3.pack()
코드 설명
-
variable=choice
: 모든 라디오 버튼을 변수choice
에 연결하여 상호 종속적이게 만들어. -
value
: 사용자가 해당 라디오 버튼을 선택하면, 변수choice
에 저장될 값을 정의해. -
함수
show_choice()
: 선택된 옵션을 콘솔에 표시해.
텍스트 값이 있는 라디오 버튼
라디오 버튼을 StringVar
변수에 연결하여 텍스트 값을 사용할 수도 있어.
# 텍스트 값 선택용 변수
color_choice = tk.StringVar()
# 텍스트 값을 가진 라디오 버튼
radio_red = tk.Radiobutton(root, text="빨간색", variable=color_choice, value="Red")
radio_blue = tk.Radiobutton(root, text="파란색", variable=color_choice, value="Blue")
radio_green = tk.Radiobutton(root, text="초록색", variable=color_choice, value="Green")
radio_red.pack()
radio_blue.pack()
radio_green.pack()
3. 스핀박스 (Spinbox
)
스핀박스는 사용자가 숫자 범위에서 값을 선택하도록 해. 나이 입력이나 수량 입력 등 숫자 데이터를 입력할 때 유용해.
스핀박스 생성
Tkinter에서 스핀박스는 Spinbox
위젯을 사용해 생성해. 사용자는 값을 직접 입력하거나 화살표로 선택할 수 있어.
# 선택된 값을 표시하는 함수
def show_spin_value():
print(f"값: {spin.get()}")
# 1부터 10까지의 스핀박스
spin = tk.Spinbox(root, from_=1, to=10, command=show_spin_value)
spin.pack(pady=20)
코드 설명
from_
과to
: 스핀박스의 값 범위를 정의해.- 함수
show_spin_value()
: 값이 변경될 때마다 선택된 값을 콘솔에 출력해.
단계 및 값 설정
increment
매개변수를 사용해 스핀박스의 증가 단계를 설정할 수 있고, values
를 사용해 특정 값을 지정할 수도 있어.
# 2씩 증가하는 스핀박스
spin_step = tk.Spinbox(root, from_=0, to=20, increment=2)
spin_step.pack(pady=5)
# 지정된 값이 있는 스핀박스
spin_values = tk.Spinbox(root, values=("작음", "중간", "큼"))
spin_values.pack(pady=5)
4. 애플리케이션 예제
체크박스, 라디오 버튼 및 스핀박스가 있는 인터페이스
이제 모든 요소를 결합해서, 사용자가 여러 옵션을 선택하고 결과를 확인할 수 있는 인터페이스를 만들어 보자.
import tkinter as tk
# 메인 창 생성
root = tk.Tk()
root.title("체크박스, 라디오 버튼 및 스핀박스 예제")
root.geometry("300x300")
# 선택된 값을 표시하는 함수
def show_selections():
selections = []
selections.append(f"체크박스 설정됨: {'예' if option.get() == 1 else '아니오'}")
selections.append(f"선택된 색상: {color_choice.get()}")
selections.append(f"수량: {spin.get()}")
message_label.config(text="\n".join(selections))
# 체크박스
option = tk.IntVar()
checkbox = tk.Checkbutton(root, text="옵션 켜기", variable=option)
checkbox.pack(pady=5)
# 라디오 버튼
color_choice = tk.StringVar(value="빨간색")
tk.Label(root, text="색상을 선택하세요:").pack()
radio_red = tk.Radiobutton(root, text="빨간색", variable=color_choice, value="빨간색")
radio_blue = tk.Radiobutton(root, text="파란색", variable=color_choice, value="파란색")
radio_green = tk.Radiobutton(root, text="초록색", variable=color_choice, value="초록색")
radio_red.pack()
radio_blue.pack()
radio_green.pack()
# 스핀박스
tk.Label(root, text="수량:").pack()
spin = tk.Spinbox(root, from_=1, to=10)
spin.pack(pady=5)
# 버튼으로 선택한 값 출력
show_button = tk.Button(root, text="선택 보기", command=show_selections)
show_button.pack(pady=10)
# 선택 결과를 표시할 레이블
message_label = tk.Label(root, text="", justify="left")
message_label.pack(pady=5)
root.mainloop()
전체 예제 설명
- 체크박스: "옵션 켜기" 상태를 설정.
- 라디오 버튼: 세 가지 색상 중 하나 선택 가능.
- 스핀박스: 1부터 10까지의 수량 선택 가능.
- "선택 보기" 버튼: 모든 위젯의 현재 상태를 출력해
message_label
로 표시해.
GO TO FULL VERSION