본문 바로가기

[Tkinter] 28강 Combobox 선택 값 처리하기

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


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

27강에서는
Combobox(ttk) 위젯을 사용해
드롭다운 선택 UI를 만드는 방법을 배웠습니다.

이번 강의에서는
선택된 값을
실제 프로그램 로직에서 어떻게 사용하는지를 다룹니다.

이번 강의의 목표는 분명합니다.
Combobox 선택 값을
조건문, 출력, 다른 위젯과 연결해
실전에서 활용하는 흐름을 익히는 것입니다.


Combobox는 입력 위젯이다

중요한 관점 하나입니다.

Combobox는
단순한 UI 요소가 아니라
입력 위젯입니다.

즉,
사용자의 선택에 따라
프로그램의 동작이
달라져야 합니다.


Combobox 값 처리의 기본 흐름

Combobox 값 처리는
다음 흐름으로 이루어집니다.

  1. 선택 값을 가져온다
  2. 조건에 따라 분기한다
  3. 결과를 출력하거나 UI를 변경한다

이 흐름을
하나씩 확인해보겠습니다.


선택 값을 버튼으로 처리하기

가장 기본적인 방식은
버튼 클릭 시
현재 선택 값을 처리하는 것입니다.

import tkinter as tk
from tkinter import ttk

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

lang = tk.StringVar()

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

def apply_choice():
    print(lang.get())

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

window.mainloop()

이 구조는
가장 많이 사용되는
기본 패턴입니다.


선택 값으로 조건 분기하기

선택 값은
조건문과 함께
자주 사용됩니다.

def apply_choice():
    if lang.get() == "Python":
        print("파이썬 선택")
    elif lang.get() == "Java":
        print("자바 선택")
    else:
        print("기타 언어 선택")

이제
Combobox 선택에 따라
프로그램 흐름이 바뀝니다.


Label과 Combobox 연결하기

선택 결과를
화면에 바로 보여주는 것도
자주 사용하는 방식입니다.

import tkinter as tk
from tkinter import ttk

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

lang = tk.StringVar()
result = tk.StringVar()

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

def update_label(event):
    result.set(f"선택한 언어: {lang.get()}")

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

tk.Label(window, textvariable=result).pack(pady=10)

window.mainloop()

이제
선택 즉시
화면이 갱신됩니다.


선택 값으로 다른 위젯 제어하기

Combobox 선택 값은
다른 위젯의 상태를
제어하는 데도 사용됩니다.

import tkinter as tk
from tkinter import ttk

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

lang = tk.StringVar()

entry = tk.Entry(window, state="disabled")
entry.pack(pady=10)

def on_select(event):
    if lang.get() == "Python":
        entry.config(state="normal")
    else:
        entry.config(state="disabled")

combo = ttk.Combobox(
    window,
    textvariable=lang,
    values=["Python", "Java"],
    state="readonly"
)
combo.pack()

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

window.mainloop()

이렇게 하면
선택에 따라
입력 UI를 제어할 수 있습니다.

입력 가능
입력 불가


Combobox 선택 이벤트 vs 버튼 처리

두 방식에는
각각 장단점이 있습니다.

선택 이벤트

  • 즉시 반응
  • 실시간 UI 변경에 적합

버튼 처리

  • 사용자가 확인 의도를 명확히 표현
  • 설정 적용 방식에 적합

상황에 맞게
선택하면 됩니다.


Combobox 값이 비어 있는 경우 처리

아직 선택하지 않은 상태에서는
값이
빈 문자열입니다.

if not lang.get():
    print("아직 선택하지 않았습니다")

실전에서는
이 예외 처리를
꼭 해주는 것이 좋습니다.


Combobox 값 처리 실전 패턴

실무에서 가장 많이 쓰이는
Combobox 처리 패턴은 다음과 같습니다.

  • state="readonly"로 입력 제한
  • StringVar로 값 관리
  • 이벤트 또는 버튼으로 처리
  • 다른 위젯과 연결

이 패턴을
기본으로 가져가면 됩니다.


이번 강의 핵심 정리

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

  • Combobox 선택 값은 get()으로 가져온다
  • 조건문과 함께 로직 분기에 사용한다
  • 이벤트로 실시간 처리할 수 있다
  • 다른 위젯과 연동이 가능하다

다음 강의 예고

다음 강의에서는
command와 bind 이벤트의 차이를 다룹니다.

지금까지 써왔던
이벤트 방식들이
명확하게 정리될 것입니다.


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

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

목차