지난 포스팅
지난 포스팅까지 tkinter의 기본적인 위젯들과 간단한 레이아웃,
그리고 command와 이벤트 바인딩의 사용법까지 가볍게 훑어보았습니다.
2022.11.15 - [기타/tkinter 한꼬집씩만 따라해보기] - 10. 특정 위젯을 비활성화하기 #도전과제있음
이번 포스팅에서는 : 콤보박스 만들기
파이썬2.x를 사용하던 시절에 tkinter의 가장 큰 단점으로 "예쁘지 않다"가 꼽히곤 했습니다.
그런데 옛날 이야기입니다. 파이썬 3 버전업에 따른, 그리고 내부적으로 Tk 8.5 업데이트를 거치면서
tkinter의 단점이 거의 말끔히 사라졌습니다. 이젠 tkinter의 간단한 문법으로
Qt나 WxPython 못지 않은 우아한 GUI를 만들어낼 수 있게 되었습니다.
그리고 그 중심엔 tkinter.ttk라는 모듈이 한 몫을 하는데요.
Themed Tk라는 의미의 ttk에는 기존 tkinter의 위젯 12개(Button, Checkbutton, Entry, Frame, Label, LabelFrame, Menubutton, PanedWindow, Radiobutton, Scale, Scrollbar 및 Spinbox) 외에도
최신 트렌드에 맞춰 6개의 기본위젯이 추가되었습니다. (Combobox, Notebook, Progressbar, Separator, Sizegrip 및 Treeview)
기존 12개의 위젯은 tkinter.ttk가 아니라 기존의 tkinter의 위젯으로도 사용 가능합니다.
다만 소소하게 사용법이 개선되었는데, 이 튜토리얼에서 다루는 범위에서는 조금 벗어난 듯 합니다.
서론이 너무 길었습니다.
그래서 이번 포스팅에서는 ttk 모듈을 통해 콤보박스를 구현해보겠습니다.
콤보박스는 아래와 같은 모양의 위젯입니다.
콤보박스 위젯을 추가하는 코드는 간단합니다.
기존과 동일하게 (다만 이번에는 ttk를 통해) 인스턴스를 생성하고,
grid로 위치를 지정한 후, "values" 속성에 튜플이나 리스트를 넣어주면 됩니다.
아래처럼요.
import tkinter as tk
from tkinter import ttk
win = tk.Tk()
combobox = ttk.Combobox(win)
combobox.grid(row=0, column=0)
combobox["values"] = [10, 20, 30, 40, 50]
# 위 라인은 combobox.configure(values=[10, 20, 30, 40, 50])과 동일
win.mainloop()
실행해보면
다양한 웹애플리케이션에서도 콤보박스를 다양하게 활용하고 있는데요.
다음 포스팅에서는 콤보박스에 값을 직접 입력하는 기능을 제한하면서
주어진 리스트에서 선택만 할 수 있게 옵션을 변경해보겠습니다.
다음 포스팅
2022.11.16 - [기타/tkinter 한꼬집씩만 따라해보기] - 12. 콤보박스에서 주어진 값만 선택 할 수 있게 변경하기
'GUI 튜토리얼 > tkinter 한꼬집씩만 따라해보기' 카테고리의 다른 글
12. 콤보박스에서 주어진 값만 선택 할 수 있게 변경하기 (0) | 2022.11.16 |
---|---|
10. 특정 위젯을 비활성화하기 #도전과제있음 (0) | 2022.11.15 |
9. 엔트리 위젯에 placeholder 구현하기 #event binding (0) | 2022.11.15 |
댓글