CodeGym /행동 /Python SELF KO /체크박스, 라디오 버튼 및 스핀박스 사용

체크박스, 라디오 버튼 및 스핀박스 사용

Python SELF KO
레벨 50 , 레슨 2
사용 가능

1. 체크박스 (Checkbutton)

체크박스는 사각형 버튼 형태로, 선택하거나 선택 해제할 수 있어. 사용자가 제공된 여러 옵션 중 하나 또는 여러 개를 선택할 수 있을 때 유용해.

체크박스 생성

체크박스를 생성하려면 Checkbutton 위젯을 사용해야 해. 체크박스의 상태(체크 여부)를 추적하려면 일반적으로 IntVar 변수를 사용해. 체크박스가 선택되면 1, 선택 해제되면 0 값을 저장해.

Python
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(): 체크박스의 현재 상태를 콘솔에 출력해. 체크박스가 체크되어 있으면 "켜짐", 아니면 "꺼짐"이 출력돼.

여러 체크박스 사용

여러 독립적인 옵션이 필요한 경우, 각각 자신의 변수에 연결된 여러 체크박스를 생성할 수 있어.

Python
# 상태 저장용 변수
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)에 연결해야 해.

Python
# 선택한 옵션 표시 함수
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 변수에 연결하여 텍스트 값을 사용할 수도 있어.

Python
# 텍스트 값 선택용 변수
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 위젯을 사용해 생성해. 사용자는 값을 직접 입력하거나 화살표로 선택할 수 있어.

Python
# 선택된 값을 표시하는 함수
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를 사용해 특정 값을 지정할 수도 있어.

Python
# 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. 애플리케이션 예제

체크박스, 라디오 버튼 및 스핀박스가 있는 인터페이스

이제 모든 요소를 결합해서, 사용자가 여러 옵션을 선택하고 결과를 확인할 수 있는 인터페이스를 만들어 보자.

Python
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로 표시해.
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION