본문 바로가기

[Tkinter] 27강 Combobox(ttk) 위젯으로 드롭다운 선택 만들기

@도마22026. 2. 3. 18:00
728x90


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

26강에서는
Listbox 위젯과 Scrollbar를 함께 사용해
목록 선택 UI를 만드는 방법을 배웠습니다.

이번 강의에서는
Listbox보다 더 간결한 선택 UI인
Combobox(ttk) 위젯을 다룹니다.

이번 강의의 목표는 분명합니다.
Combobox가
어떤 상황에 적합한지 이해하고,
드롭다운 선택 UI를 만드는 기본 흐름을 익히는 것입니다.


Combobox 위젯이란 무엇인가

Combobox는
드롭다운 형태로
여러 항목 중 하나를 선택하는 위젯입니다.

겉보기에는
Entry + Listbox가
합쳐진 형태라고 보면 됩니다.

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

  • 국가 선택
  • 옵션 선택
  • 모드 선택
  • 설정 값 선택

Combobox는 ttk 위젯이다

중요한 포인트 하나입니다.

Combobox는
tkinter가 아니라
tkinter.ttk 모듈에 포함된 위젯입니다.

따라서
다음과 같이 import 해야 합니다.

from tkinter import ttk

Combobox의 기본 구조 이해하기

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

  • 표시될 항목 목록
  • 현재 선택된 값
  • 연결된 변수

이 구조는
Radiobutton과
비슷한 감각으로 이해하면 됩니다.


Combobox의 기본 사용 형태

ttk.Combobox(부모, values=항목리스트)

values에는
리스트나 튜플 형태의
데이터를 전달합니다.


가장 기본적인 Combobox 예제

import tkinter as tk
from tkinter import ttk

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

combo = ttk.Combobox(
    window,
    values=["Python", "Java", "C++", "JavaScript"]
)
combo.pack(pady=20)

window.mainloop()

클릭하면
드롭다운 목록이
표시됩니다.


Combobox 선택 값 확인하기

Combobox의 현재 값은
.get()으로 확인합니다.

print(combo.get())

아직 선택하지 않았다면
빈 문자열이 반환됩니다.


변수와 함께 Combobox 사용하기

Combobox는
변수와 함께 사용하는 것이
가장 일반적인 방식입니다.

lang = tk.StringVar()

combo = ttk.Combobox(
    window,
    textvariable=lang,
    values=["Python", "Java", "C++"]
)

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


기본 선택값 설정하기

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

combo.current(0)

이 코드는
첫 번째 항목을
기본 선택으로 설정합니다.


Combobox 선택 이벤트 처리하기

Combobox는
선택이 바뀔 때
이벤트를 발생시킵니다.

이 이벤트의 이름은
<<ComboboxSelected>> 입니다.


선택 이벤트 기본 예제

import tkinter as tk
from tkinter import ttk

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

lang = tk.StringVar()

def on_select(event):
    print(lang.get())

combo = ttk.Combobox(
    window,
    textvariable=lang,
    values=["Python", "Java", "C++"]
)
combo.pack(pady=20)

combo.bind("<<ComboboxSelected>>", on_select)

window.mainloop()

항목을 선택할 때마다
현재 값이 출력됩니다.


Combobox 입력 제한하기

기본 Combobox는
직접 입력도 가능합니다.

선택만 가능하게 하고 싶다면
state="readonly"를 사용합니다.

combo = ttk.Combobox(
    window,
    values=["Low", "Medium", "High"],
    state="readonly"
)

이제
목록에 없는 값은
입력할 수 없습니다.


Combobox와 Listbox의 차이

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

Listbox

  • 여러 항목을 한 번에 표시
  • 다중 선택 가능
  • 화면 공간을 많이 사용

Combobox

  • 드롭다운 형태
  • 하나만 선택 가능
  • 공간을 적게 사용

Combobox는 언제 사용하면 좋은가

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

  • 선택지가 명확할 때
  • 하나만 선택해야 할 때
  • UI를 깔끔하게 유지하고 싶을 때

항목을 항상 보여줘야 한다면
Listbox가 더 적합합니다.


이번 강의 핵심 정리

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

  • Combobox는 드롭다운 선택 위젯이다
  • ttk 모듈에 포함되어 있다
  • values로 선택 항목을 지정한다
  • <<ComboboxSelected>> 이벤트로 선택을 처리한다

다음 강의 예고

다음 강의에서는
Combobox 선택 값을 실제 로직에 사용하는 방법을 다룹니다.

이제
입력 위젯들이
서로 연결되기 시작합니다.


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

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

목차