강의노트 Combo박스
강의노트
• 조회수 49
• 댓글 0
• 작성 1개월 전
• 수정 1개월 전
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()
- 메인 윈도우 만든다.
- Combobox 값 목록을 작성
- Combobox 생성한다.
- 기본 선택 값 설정한다.
콤보박스에서 사용자가 어떤 값을 선택한 것을 확인하려면 .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()
- 바나나를 기본 값으로 선택한다.
콤보 박스의 선택이 변경될 때 이벤트의 처리는 <
예 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()
이전 글
다음 글
로그인 하면 댓글을 쓸 수 있습니다.