반응형
Python에 내장된 표준 GUI 도구인 Tkinter는 설치 없이 바로 사용 가능하며, 버튼, 레이블, 입력창, 캔버스 등 다양한 위젯(widget)을 제공한다.
1. Tkinter의 특징과 강점
- Python 기본 포함 – 추가 설치 없이 사용 가능.
- 크로스플랫폼 지원 – Windows, macOS, Linux에서 동일하게 실행 가능.
- ttk 모듈로 제공되는 테마 위젯 통해 모던한 UI 구성 가능.
- 학습 곡선이 낮아 초보자에게 적합.
2. 기본 윈도우 생성하기
import tkinter as tk
root = tk.Tk()
root.title("예제 GUI")
root.geometry("300x200")
root.mainloop()
이 코드는 제목과 사이즈가 지정된 창을 띄우며, 이벤트 루프(mainloop()
)를 통해 인터랙션을 처리한다.
3. 주요 위젯 소개
Label
: 글자나 이미지 표시Button
: 클릭 가능한 버튼Entry
: 한 줄 입력창Text
: 여러 줄 입력창Canvas
: 도형, 이미지 드로잉 영역ttk.Combobox
,Progressbar
,Treeview
등 고급 위젯.
4. 이벤트 처리와 바인딩
import tkinter as tk
def on_click():
label.config(text="버튼이 눌렸어요!")
root = tk.Tk()
label = tk.Label(root, text="안녕하세요")
button = tk.Button(root, text="클릭!", command=on_click)
label.pack()
button.pack()
root.mainloop()
버튼 클릭 시 command
콜백이 실행되고, 더 복잡한 이벤트는 widget.bind()
를 사용해 키보드나 마우스 이벤트를 처리할 수 있다.
5. 레이아웃 관리: pack, grid, place
pack()
: 수직·수평으로 위젯 정렬grid()
: 행과 열 기반 배치place()
: 정확한 좌표 지정 레이아웃
적합한 레이아웃 매니저 선택은 유지보수성과 UI 일관성을 결정한다.
6. ttk를 활용한 테마 UI
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
btn = ttk.Button(root, text="ttk 버튼")
btn.pack(padx=10, pady=10)
root.mainloop()
ttk 사용 시 기본 위젯이 시스템 네이티브 테마에 맞춰 자동 스타일링된다.
7. 간단 예제: 계산기 만들기
import tkinter as tk
def calculate():
expr = entry.get()
result.set(eval(expr))
root = tk.Tk()
root.title("계산기")
entry = tk.Entry(root, width=16)
entry.grid(row=0, column=0, columnspan=4)
result = tk.StringVar()
label = tk.Label(root, textvariable=result)
label.grid(row=1, column=0, columnspan=4)
buttons = [
('7',1,0),('8',1,1),('9',1,2),('/',1,3),
('4',2,0),('5',2,1),('6',2,2),('*',2,3),
('1',3,0),('2',3,1),('3',3,2),('-',3,3),
('0',4,0),('.',4,1),('=',4,2),('+',4,3),
]
for (text,row,col) in buttons:
btn = tk.Button(root, text=text, command=lambda t=text: entry.insert(tk.END, t) if t!='=' else calculate())
btn.grid(row=row, column=col, sticky="nsew")
root.mainloop()
간단하지만 위젯, 레이아웃 관리, 이벤트 호출을 모두 경험할 수 있는 실습 예제다.
8. tkinter와 타 GUI 라이브러리 비교
항목 | tkinter | PyQt / PySide | wxPython |
---|---|---|---|
포함 여부 | Python 표준 포함 | 별도 설치 필요 | 별도 설치 필요 |
학습 곡선 | 초급~중급 | 중급~고급 | 중급 |
네이티브 느낌 | ttk 사용 시 가능 | 우수 | 우수 |
라이선스 | Python 라이선스 | GPL / 상업용 | wxWindows 라이선스 |
GUI 복잡도 | 간단~중어플 | 복잡한 GUI에도 적합 | 중~대형 어플 적합 |
보다 복잡한 GUI나 상업적 프로젝트에는 PyQt/PySide나 wxPython이 적합한 선택일 수 있다.
9. 실무 팁 정리
- 작은 툴이나 학습 목적 → tkinter 추천
- OS 호환성 고려 → 표준 포함, 설치 필요 없음
- 디자인 통일성 중요 시 → ttk 사용 권장
- 복잡한 GUI 프로젝트 → PySide / PyQt 고려
10. 결론
Tkinter는 Python 사용자를 위한 진입 장벽이 낮은 GUI 도구이다. 간단한 도구를 빠르게 만들거나, GUI 교육 목적으로 매우 적합하다. 다만 대규모 또는 상업용 GUI에는 더 강력한 PyQt/PySide 등이 더 나은 선택일 수 있다. 모던한 테마와 이벤트 처리, 레이아웃 관리를 제대로 익히면, 나만의 GUI 도구도 얼마든지 제작 가능하다.
출처 (References)
728x90
반응형
'Python' 카테고리의 다른 글
[PYTHON] Matplotlib 한글 깨짐 해결법 완벽 가이드 (0) | 2025.07.25 |
---|---|
[PYTHON] Cython으로 파이썬 속도 10배 빠르게 만들기 (0) | 2025.07.25 |
[PYTHON] threading vs asyncio : 동시성 프로그래밍 완전 비교 (0) | 2025.07.25 |
[PYTHON] setup.py vs pyproject.toml : Python 패키징의 과거와 미래 (0) | 2025.07.25 |
[PYTHON] AWS Lambda로 서버리스 Python 애플리케이션 구축하기 (0) | 2025.07.25 |