본문 바로가기

[Tkinter] 16강 pack vs grid vs place 레이아웃 완전 비교

@도마22026. 1. 28. 21:00
728x90


이 강의는 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 위젯을 사용해 화면 영역을 나누는 방법을 배웁니다.

이제부터는
복잡한 화면도
정돈된 구조로 만들 수 있게 됩니다.


728x90
도마2
@도마2 :: 도마의 코드노트

초보자를 위한 코딩 강의를 정리합니다. 파이썬부터 C#, Unity 게임 제작까지 차근차근 기록합니다. — 도마

목차