윈도우 프로그램 기본 위젯

강의노트 Combo박스

강의노트 • 조회수 49 • 댓글 0 • 작성 1개월 전 • 수정 1개월 전  
  • 콤보박스
  • combo box

Combo box

선택 가능한 입력이 여러 개일 때, 드롭 다운 메뉴로 가능한 목록을 보여줘 사용자가 쉽게 선택하거나 직접 텍스트를 입력할 수 있는 위젯을 combobox라 한다.

콤보박스는 tkinter의 ttk에 포함되어있다. tkinter에는 포함되지 않았다.

import tkinter as tk
from tkinter import ttk

root = tk.Tk()  #1
root.title("Combobox 예제")
root.geometry("300x150")

fruits = ["사과", "바나나", "포도", "딸기"]  #2

combo = ttk.Combobox(root, values=fruits) #3
combo.pack(pady=20)

combo.set("과일을 선택하세요") #4

root.mainloop()
  1. 메인 윈도우 만든다.
  2. Combobox 값 목록을 작성
  3. Combobox 생성한다.
  4. 기본 선택 값 설정한다.

콤보박스에서 사용자가 어떤 값을 선택한 것을 확인하려면 .get() 메서드를 사용한다.

콤보박스에서 기본 값은 'combo.current(번호)'로 표현한다.

예 1

콤보 박스의 과일을 선택하면 그 결과를 레이블에 출력한다.

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.title("Combobox 값 읽기")
root.geometry("300x150")

fruits = ["사과", "바나나", "포도", "딸기"]

combo = ttk.Combobox(root, values=fruits)
combo.current(1) #1
combo.pack(pady=10)

def show_selection():
    s = '선택한 과일은 '+ combo.get()+ '입니다.'
    lbl.configure(text=s)

lbl = ttk.Label(root, text="선택한 과일 : ")
lbl.pack(pady=5)

btn = ttk.Button(root, text="선택 확인", command=show_selection)
btn.pack(pady=5)

root.mainloop()
  1. 바나나를 기본 값으로 선택한다.

콤보 박스의 선택이 변경될 때 이벤트의 처리는 <>이벤트를 바인딩한다.

예 2

콤보박스의 과일을 선택을 변경하면 이벤트가 발생해 결과를 출력한다.

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.title("Combobox 이벤트")
root.geometry("300x150")

fruits = ["사과", "바나나", "포도", "딸기"]

combo = ttk.Combobox(root, values=fruits)
combo.set("과일을 선택하세요")
combo.pack(pady=10)

def on_select(event):
    s = '선택한 과일은 '+ combo.get()+ '입니다.'
    lbl.configure(text=s)

lbl = ttk.Label(root, text="선택한 과일 : ")
lbl.pack(pady=5)
# 이벤트 바인딩
combo.bind("<>", on_select)

root.mainloop()

콤보 박스는 기본(입력 가능), 선택만 가능한 입력 불가능 그리고 비활성화의 상태를 지정할 수 있다. 지정하는 방법은 : state='normal' , state='readonly', state='disabled'

combo = ttk.Combobox(root, values=fruits, state="readonly")

예3

콤보 박스에 빨강, 파랑, 초록, 노랑의 목록을 주고, 이 목록은 변경 불가로 선택만 가능하게 한다. 색상을 선택시 창의 배경색을 변경한다.

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.title("색상 선택 프로그램")
root.geometry("300x200")

colors = ["빨강", "파랑", "초록", "노랑"]

combo = ttk.Combobox(root, values=colors, state="readonly")
combo.set("색상을 선택하세요")
combo.pack(pady=20)

def change_color(event):
    color_map = {
        "빨강": "red",
        "파랑": "blue",
        "초록": "green",
        "노랑": "yellow"
    }
    selected = combo.get()
    root.configure(bg=color_map.get(selected, "white"))

combo.bind("<>", change_color)

root.mainloop()
이전 글
다음 글
댓글
댓글로 소통하세요.