
이 강의는 Tkinter GUI 강의 43강입니다
42강에서는
공통 스타일을 역할 기준으로 설계하며
UI를 시스템처럼 관리하는 방법을 배웠습니다.
이번 강의에서는
그 공통 스타일을
별도의 파일로 분리합니다.
이번 강의의 목표는 분명합니다.
UI 코드에서
스타일 정의를 완전히 떼어내는 구조를 만드는 것입니다.
왜 스타일 코드를 분리해야 할까
UI가 커질수록
이런 문제가 생깁니다.
- UI 코드가 길어짐
- 스타일 수정 시 화면 코드까지 건드림
- 재사용이 어려움
이 문제는
구조의 문제입니다.
스타일은 UI 로직이 아니다
→ 분리 대상이다
분리의 기준은 단순하다
분리 기준은
아주 명확합니다.
UI = 화면 배치 + 이벤트
Style = 외형 규칙
이 두 개를
같은 파일에 둘 이유가 없습니다.
기본 분리 구조 미리 보기
이번 강의에서 만들 구조는 다음과 같습니다.
main.py
styles.py
- main.py : UI 구성, 이벤트 처리
- styles.py : ttk Style 정의
이 구조만으로도
코드 가독성이
확 달라집니다.
styles.py 파일 만들기
먼저
스타일만 담당하는
파일을 하나 만듭니다.
from tkinter import ttk
def setup_styles():
style = ttk.Style()
style.configure("Title.TLabel", font=("Arial", 16, "bold"))
style.configure("Body.TLabel", font=("Arial", 11))
style.configure("Form.TEntry", padding=6)
style.configure("Primary.TButton", padding=(10, 6))
return style
이 파일은
스타일 정의만
담당합니다.
setup_styles 함수의 역할
이 함수의 역할은
딱 하나입니다.
- Style 객체 생성
- 공통 스타일 등록
UI와 관련된
어떤 코드도
여기에 들어가지 않습니다.
main.py에서 스타일 불러오기
이제
UI 코드가 있는
main.py에서
스타일을 사용합니다.
import tkinter as tk
from tkinter import ttk
from styles import setup_styles
window = tk.Tk()
window.geometry("300x220")
setup_styles()
ttk.Label(window, text="회원 가입", style="Title.TLabel").pack(pady=10)
ttk.Label(window, text="이메일", style="Body.TLabel").pack()
ttk.Entry(window, style="Form.TEntry").pack(pady=5)
ttk.Button(window, text="가입하기", style="Primary.TButton").pack(pady=15)
window.mainloop()
UI 코드가
훨씬
읽기 쉬워졌습니다.
스타일 객체를 굳이 변수로 안 받아도 된다
Style은
내부적으로
전역처럼 동작합니다.
그래서
다음 두 방식 모두 가능합니다.
setup_styles()
style = setup_styles()
지금 단계에서는
단순 호출만으로
충분합니다.
이 구조의 가장 큰 장점
이 구조의 장점은
바로 이겁니다.
- 스타일만 수정 가능
- UI 코드 변경 없음
- 여러 프로젝트에 재사용 가능
즉,
스타일이 자산이 됩니다.
스타일 파일을 더 나눌 수도 있다
프로젝트가 커지면
이런 구조도 가능합니다.
styles/
├─ base.py
├─ buttons.py
└─ labels.py
하지만
지금 단계에서는
styles.py 하나면 충분합니다.
분리 후 생기는 사고의 변화
스타일을 분리하면
개발 중 이런 생각이 생깁니다.
- “이건 UI 문제다”
- “이건 스타일 문제다”
이 구분이 생기는 순간
GUI 코드가
엉키지 않습니다.
다른 GUI에서도 똑같이 쓰는 구조
이 방식은
Tkinter만의 것이 아닙니다.
- 웹 → CSS 파일 분리
- PyQt → StyleSheet 분리
- Unity → UI 프리셋 분리
지금 배우는 건
GUI 공통 구조입니다.
언제 스타일 분리를 해야 할까
권장 타이밍은 다음입니다.
- 화면이 2~3개 이상
- 공통 스타일이 보이기 시작
- UI 코드가 길어질 때
이때 분리하면
가장 효과가 큽니다.
이번 강의 핵심 정리
이번 강의에서 꼭 기억해야 할 내용입니다.
- 스타일 코드는 UI 로직과 분리한다
- styles.py 파일로 관리한다
- UI 코드 가독성이 크게 좋아진다
- 유지보수와 재사용성이 높아진다
다음 강의 예고
다음 강의에서는
Menu 위젯으로 메뉴바 만들기를 다룹니다.
이제
UI의 외형뿐 아니라
프로그램 구조가 보이기 시작합니다.
'⚙️ Python > 🪟 Tkinter 기초' 카테고리의 다른 글
| [Tkinter] 45강 서브 메뉴 구성하기 (0) | 2026.02.12 |
|---|---|
| [Tkinter] 44강 Menu 위젯으로 메뉴바 만들기 (0) | 2026.02.11 |
| [Tkinter] 42강 공통 스타일 설계 방법 (0) | 2026.02.10 |
| [Tkinter] 41강 ttk Label과 Entry 스타일 적용 (0) | 2026.02.10 |
| [Tkinter] 40강 ttk Button 스타일 커스터마이징 (0) | 2026.02.09 |