본문 바로가기

[Tkinter] 24강 Spinbox 위젯으로 숫자 선택하기

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


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

23강에서는
Scale 위젯을 사용해
슬라이더로 값을 조절하는 방법을 배웠습니다.

이번 강의에서는
비슷해 보이지만
입력 방식이 다른
Spinbox 위젯을 다룹니다.

이번 강의의 목표는 분명합니다.
Spinbox가
어떤 상황에 적합한지 이해하고,
숫자 선택 입력을 안정적으로 처리하는 방법을 익히는 것입니다.


Spinbox 위젯이란 무엇인가

Spinbox는
숫자를 직접 입력하거나
▲ / ▼ 버튼으로
값을 증감시키는 위젯입니다.

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

  • 수량 선택
  • 나이 입력
  • 개수 설정
  • 단계 값 선택

Scale과 달리
정확한 숫자 입력에 더 적합합니다.


Spinbox의 기본 구조 이해하기

Spinbox는
다음 요소로 구성됩니다.

  • 시작 값(from_)
  • 끝 값(to)
  • 증가 단위(increment)

이 세 가지가
Spinbox의 핵심입니다.


Spinbox의 기본 사용 형태

tk.Spinbox(부모, from_=0, to=10)

from_과 to는
선택 가능한
값의 범위를 의미합니다.


가장 기본적인 Spinbox 예제

import tkinter as tk

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

spin = tk.Spinbox(window, from_=0, to=10)
spin.pack(pady=20)

window.mainloop()

버튼을 누르거나
직접 입력해서
값을 변경할 수 있습니다.


Spinbox 값 확인하기

Spinbox의 값은
.get()으로 가져옵니다.

print(spin.get())

주의할 점은
반환값이 문자열(str) 이라는 것입니다.


버튼과 함께 Spinbox 값 출력하기

import tkinter as tk

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

spin = tk.Spinbox(window, from_=1, to=5)
spin.pack()

def show_value():
print(spin.get())

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

window.mainloop()

필요하다면
int()로 변환해서
사용해야 합니다.


Spinbox에 증가 단위 설정하기

increment 옵션을 사용하면
값이 증가하는 단위를
지정할 수 있습니다.

spin = tk.Spinbox(window, from_=0, to=100, increment=5)

이제
값이
5씩 증가합니다.


변수와 함께 Spinbox 사용하기

Spinbox도
변수와 연결해서
사용할 수 있습니다.

value = tk.IntVar()

spin = tk.Spinbox(window, from_=0, to=10, textvariable=value)

이제
value.get()으로도
값을 확인할 수 있습니다.


Spinbox 값 변경 이벤트 처리하기

Spinbox는
값이 변경될 때
함수를 실행할 수 있습니다.

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

spin = tk.Spinbox(
    window,
    from_=0,
    to=10,
    command=on_change
)

▲ / ▼ 버튼을 누를 때마다
함수가 호출됩니다.


Spinbox와 Scale의 차이

두 위젯의 차이를
정리하면 다음과 같습니다.

Scale

  • 슬라이더 방식
  • 연속적인 값 조절
  • 대략적인 값 선택에 적합

Spinbox

  • 숫자 입력 방식
  • 정확한 값 선택
  • 단계형 입력에 적합

상황에 맞게
선택하는 것이 중요합니다.


Spinbox는 언제 사용하면 좋은가

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

  • 정확한 숫자 입력이 필요할 때
  • 선택 범위가 좁을 때
  • 키보드 입력도 허용하고 싶을 때

값의 흐름을 직관적으로 보여주고 싶다면
Scale이 더 적합합니다.


Spinbox 사용 시 주의할 점

Spinbox는
직접 입력이 가능하기 때문에
범위를 벗어난 값이 들어올 수 있습니다.

따라서
실제 사용 시에는
입력값 검증이 필요합니다.
(이 부분은 이후 강의에서 다룹니다)


이번 강의 핵심 정리

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

  • Spinbox는 숫자 선택 입력 위젯이다
  • from_, to로 범위를 지정한다
  • get()으로 값을 가져온다
  • 반환값은 문자열이므로 변환이 필요하다

다음 강의 예고

다음 강의에서는
Listbox 위젯을 사용해
목록 형태의 선택 입력을 처리하는 방법을 배웁니다.

이제부터는
단일 값이 아닌
리스트 기반 입력으로 넘어갑니다.


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

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

목차