본문 바로가기

[Tkinter] 22강 Radiobutton 위젯으로 하나만 선택하기

@도마22026. 1. 31. 21:00
728x90


이 강의는 Tkinter GUI 강의 22강입니다

21강에서는
Checkbutton 위젯을 사용해
여러 옵션을 선택하는 방법을 배웠습니다.

이번 강의에서는
Checkbutton과 매우 비슷해 보이지만
동작 방식이 완전히 다른
Radiobutton 위젯을 다룹니다.

이번 강의의 목표는 분명합니다.
Radiobutton이
왜 하나만 선택되는지 이해하고,
그 값을 정확하게 처리하는 방법을 익히는 것입니다.


Radiobutton 위젯이란 무엇인가

Radiobutton은
여러 선택지 중에서
오직 하나만 선택할 수 있는 위젯입니다.

대표적인 사용 예시는 다음과 같습니다.

  • 성별 선택
  • 결제 수단 선택
  • 난이도 선택
  • 옵션 중 하나만 고르는 경우

Checkbutton과 가장 큰 차이점은
선택이 서로 연결되어 있다는 점입니다.


Radiobutton의 핵심 개념

Radiobutton의 핵심은
모든 버튼이 하나의 변수를 공유한다는 것입니다.

  • 같은 variable을 사용
  • 각 버튼은 서로 다른 value를 가짐
  • variable 값으로 현재 선택 상태 판단

이 구조를 이해하면
Radiobutton은 어렵지 않습니다.


Radiobutton의 기본 사용 형태

tk.Radiobutton(부모, text="옵션", variable=변수, value=값)

여기서 중요한 것은
variable과 value입니다.


가장 기본적인 Radiobutton 예제

import tkinter as tk

window = tk.Tk()
window.geometry("300x200")

choice = tk.IntVar()

tk.Radiobutton(window, text="옵션 1", variable=choice, value=1).pack(anchor="w")
tk.Radiobutton(window, text="옵션 2", variable=choice, value=2).pack(anchor="w")
tk.Radiobutton(window, text="옵션 3", variable=choice, value=3).pack(anchor="w")

window.mainloop()

세 개의 버튼 중
하나를 선택하면
choice 변수의 값이 바뀝니다.


Radiobutton 값 확인하기

선택된 값은
.get()으로 확인합니다.

print(choice.get())
  • 옵션 1 선택 → 1
  • 옵션 2 선택 → 2
  • 옵션 3 선택 → 3

버튼을 눌러 선택 결과 출력하기

import tkinter as tk

window = tk.Tk()
window.geometry("300x200")

choice = tk.IntVar()

def show_choice():
    print(choice.get())

tk.Radiobutton(window, text="Easy", variable=choice, value=1).pack(anchor="w")
tk.Radiobutton(window, text="Normal", variable=choice, value=2).pack(anchor="w")
tk.Radiobutton(window, text="Hard", variable=choice, value=3).pack(anchor="w")

tk.Button(window, text="확인", command=show_choice).pack(pady=10)

window.mainloop()

확인 버튼을 누르면
현재 선택된 옵션이 출력됩니다.


문자열 값으로 Radiobutton 사용하기

Radiobutton은
IntVar뿐만 아니라
StringVar도 사용할 수 있습니다.

level = tk.StringVar()

tk.Radiobutton(window, text="Low", variable=level, value="low").pack(anchor="w")
tk.Radiobutton(window, text="High", variable=level, value="high").pack(anchor="w")

이 경우
level.get()의 결과는
문자열이 됩니다.


기본 선택값 설정하기

프로그램 시작 시
기본 선택값을
미리 지정할 수 있습니다.

choice.set(2)

이렇게 하면
해당 value를 가진
Radiobutton이
처음부터 선택된 상태로 표시됩니다.


Radiobutton 선택 변경 이벤트 처리

Radiobutton도
선택이 바뀔 때
함수를 실행할 수 있습니다.

def on_change():
print(choice.get())


tk.Radiobutton(
window,
text="옵션",
variable=choice,
value=1,
command=on_change
)

선택이 바뀔 때마다
함수가 호출됩니다.


Checkbutton과 Radiobutton의 차이

지금까지 배운 내용을
정리해보면 다음과 같습니다.

Checkbutton

  • 여러 개 선택 가능
  • 각각 독립적인 변수 사용

Radiobutton

  • 하나만 선택 가능
  • 하나의 변수를 공유

이 차이를
명확히 구분해야 합니다.


Radiobutton은 언제 사용하면 좋은가

Radiobutton은
다음과 같은 경우에 적합합니다.

  • 반드시 하나만 선택해야 할 때
  • 선택지 수가 명확할 때
  • 선택 결과가 중요한 경우

선택지가 많아지면
Combobox가 더 적합합니다.
(나중 강의에서 다룹니다)


이번 강의 핵심 정리

이번 강의에서 꼭 기억해야 할 내용입니다.

  • Radiobutton은 하나만 선택하는 위젯이다
  • 모든 버튼이 하나의 변수를 공유한다
  • value 값으로 선택 상태를 구분한다
  • Checkbutton과 목적이 다르다

다음 강의 예고

다음 강의에서는
Scale 위젯을 사용해
슬라이더 형태의 입력을 처리하는 방법을 배웁니다.

선택이 아니라
값을 조절하는 입력 방식입니다.


728x90
도마2
@도마2 :: 도마의 코드노트

초보자를 위한 코딩 강의를 정리합니다. 파이썬부터 C#, Unity 게임 제작까지 차근차근 기록합니다. — 도마

목차