
이 강의는 Tkinter GUI 강의 16강입니다
15강에서는
place 레이아웃을 사용해
좌표 기반으로 위젯을 배치하는 방법을 배웠습니다.
이번 강의에서는
지금까지 배운 세 가지 레이아웃
- pack
- grid
- place
를 한 번에 비교합니다.
이번 강의의 목표는 분명합니다.
각 레이아웃의 특징을 정리하고,
어떤 상황에서 어떤 레이아웃을 써야 하는지
선택 기준을 만드는 것입니다.
Tkinter에는 왜 레이아웃이 3가지나 있을까
Tkinter는
하나의 정답 레이아웃을 강요하지 않습니다.
대신
서로 다른 목적에 맞는
세 가지 배치 방식을 제공합니다.
즉,
레이아웃은 “문법”이 아니라
UI를 구성하는 사고 방식입니다.
pack 레이아웃의 배치 방식
pack은
순서 기반 배치입니다.
위젯을
위에서 아래로,
왼쪽에서 오른쪽으로
차곡차곡 쌓아갑니다.
pack 예제
import tkinter as tk
window = tk.Tk()
window.geometry("300x200")
tk.Label(window, text="위").pack()
tk.Label(window, text="중간").pack()
tk.Label(window, text="아래").pack()
window.mainloop()
pack은
빠르게 화면을 만들기에
아주 좋습니다.
pack은 언제 적합한가
pack은
다음과 같은 경우에 적합합니다.
- 단순한 레이아웃
- 위아래로 쌓는 구조
- 빠른 테스트용 UI
하지만
위젯을 나란히 정렬하거나
구조적인 화면에는 한계가 있습니다.
grid 레이아웃의 배치 방식
grid는
행(row)과 열(column) 기준 배치입니다.
화면을
표 형태로 나누고
각 칸에 위젯을 배치합니다.
grid 예제
import tkinter as tk
window = tk.Tk()
window.geometry("300x200")
tk.Label(window, text="이름").grid(row=0, column=0)
tk.Entry(window).grid(row=0, column=1)
tk.Label(window, text="비밀번호").grid(row=1, column=0)
tk.Entry(window).grid(row=1, column=1)
window.mainloop()
row와 column만 봐도
화면 구조가 바로 떠오릅니다.
grid는 언제 적합한가
grid는
다음과 같은 화면에 매우 적합합니다.
- 로그인 화면
- 설정 화면
- 입력 폼(Form)
- 표 형태 UI
구조적인 화면을 만들 때
가장 많이 사용되는 레이아웃입니다.
place 레이아웃의 배치 방식
place는
좌표(x, y) 기준 배치입니다.
자동 정렬 없이
위젯 위치를
개발자가 직접 결정합니다.
place 예제
import tkinter as tk
window = tk.Tk()
window.geometry("300x200")
tk.Label(window, text="좌표 배치").place(x=50, y=40)
tk.Button(window, text="버튼").place(x=150, y=100)
window.mainloop()
정확한 위치 제어가 가능하지만
자동 정렬은 없습니다.
place는 언제 적합한가
place는
다음과 같은 경우에 적합합니다.
- 고정 해상도 프로그램
- 게임 UI
- Canvas 기반 화면
- 정밀한 위치 제어가 필요한 경우
일반적인 앱 UI에는
신중하게 사용해야 합니다.
세 가지 레이아웃 한눈에 비교
pack
- 순서 기반 배치
- 단순하고 빠름
- 구조적인 화면에는 한계
grid
- 행·열 기반 배치
- 구조적인 UI에 최적
- 입력 화면에 강함
place
- 좌표 기반 배치
- 위치 제어 자유도 최고
- 유지보수 난이도 높음
가장 중요한 규칙 하나
Tkinter 레이아웃에는
반드시 지켜야 할 규칙이 있습니다.
같은 부모 위젯 안에서는
pack과 grid를
함께 사용할 수 없습니다.
place 역시
다른 레이아웃과 섞어 쓰면
혼란이 생깁니다.
프레임(Frame)을 나누면
레이아웃을 분리해서 사용할 수 있습니다.
(이 내용은 다음 강의에서 다룹니다)
레이아웃 선택 기준 정리
UI를 만들 때
다음 기준으로 생각하면 됩니다.
- 빠르게 쌓는다 → pack
- 구조적으로 정렬한다 → grid
- 정확한 위치를 찍는다 → place
이 감각만 잡아도
Tkinter UI 설계가 훨씬 편해집니다.
이번 강의 핵심 정리
이번 강의에서 꼭 기억해야 할 내용입니다.
- Tkinter에는 pack, grid, place가 있다
- 레이아웃마다 목적이 다르다
- 구조적인 화면에는 grid가 가장 적합하다
- 레이아웃은 섞지 말고 분리해서 사용한다
다음 강의 예고
다음 강의에서는
Frame 위젯을 사용해 화면 영역을 나누는 방법을 배웁니다.
이제부터는
복잡한 화면도
정돈된 구조로 만들 수 있게 됩니다.
'⚙️ Python > 🪟 Tkinter 기초' 카테고리의 다른 글
| [Tkinter] 18강 LabelFrame 위젯으로 그룹 UI 만들기 (0) | 2026.01.29 |
|---|---|
| [Tkinter] 17강 Frame 위젯으로 화면 영역 나누기 (0) | 2026.01.29 |
| [Tkinter] 15강 place 레이아웃 개념 이해하기 (0) | 2026.01.28 |
| [Tkinter] 14강 grid 레이아웃 개념 이해하기 (0) | 2026.01.27 |
| [Tkinter] 13강 pack 옵션으로 위치 조절하기 (0) | 2026.01.27 |