Tkinter로 GUI 애플리케이션을 개발할 때 위젯을 화면에 실제로 표시하려면 반드시 각 위젯을 지오메트리 매니저(geometry manager)와 연결해야 합니다. Tkinter는 크게 세 가지 방식으로 위젯을 배치할 수 있으며, 그중 Grid와 Pack이 가장 널리 사용됩니다.
Pack 지오메트리 매니저란?
Pack 매니저는 Tkinter에서 제공하는 지오메트리 매니저 중 가장 간단하고 직관적인 방식입니다. 위젯에 패딩(padding), X·Y축 기준 위치 지정, 확장(expand) 속성 등 다양한 옵션을 부여할 수 있습니다. Pack은 한 줄(row) 또는 한 열(column) 단위로 위젯을 순차적으로 배치하는 구조로 동작하며, 이 속성들은 Tkinter 라이브러리의 모든 위젯에 공통적으로 적용됩니다.
간단한 폼이나 버튼 몇 개를 빠르게 배치할 때 유용하지만, 위젯 수가 많아지면 원하는 위치를 정밀하게 제어하기 어렵다는 한계가 있습니다.
Grid 지오메트리 매니저란?
Grid 매니저는 비교적 복잡한 애플리케이션 개발에 주로 사용됩니다. 하나의 창 안에 많은 위젯을 서로 겹치거나 간섭하지 않도록 배치해야 할 때 특히 효과적입니다.
Grid는 기본 좌표계와 유사하게 동작합니다. 행(row)과 열(column)로 이루어진 격자 구조를 기반으로 하며, 각 위젯을 X축과 Y축 방향으로 자유롭게 배치할 수 있습니다. 여러 개의 행과 여러 개의 열을 동시에 활용할 수 있기 때문에 계산기, 설정 화면처럼 표 형태의 레이아웃이 필요한 UI를 만들 때 강력한 성능을 발휘합니다.
예제 코드
아래 예제는 같은 Button 위젯을 Grid와 Pack 각각으로 배치했을 때의 결과를 비교하는 코드입니다.
# 필요한 라이브러리 임포트
from tkinter import *
from tkinter import ttk
# tkinter 프레임(윈도우) 인스턴스 생성
win = Tk()
# 윈도우 크기 설정
win.geometry("700x350")
# Label 및 Button 위젯 추가
Button(win, text= "Button-1").grid(row=0, column=1, padx= 10, pady=20)
# Button(win, text= "Button-2").pack(padx= 10, pady=20)
win.mainloop()실행 결과
먼저 Grid 방식으로 배치된 Button-1의 실행 결과입니다.

이제 코드에서 Button-2(Pack 방식)의 주석을 해제하고, Button-1(Grid 방식)을 주석 처리한 뒤 다시 실행해 보세요.

정리
- Pack: 사용법이 간단하여 소규모 UI나 빠른 프로토타이핑에 적합합니다. 한 줄 또는 한 열 단위로 위젯을 순서대로 배치합니다.
- Grid: 행과 열의 격자 구조를 기반으로 복잡한 레이아웃을 정밀하게 구성할 수 있어, 대규모 애플리케이션 개발에 적합합니다.
주의할 점은 하나의 컨테이너(윈도우나 프레임) 안에서 Grid와 Pack을 함께 사용할 수 없다는 것입니다. 두 매니저가 서로 충돌하기 때문에, 레이아웃 설계 시 어떤 매니저를 사용할지 미리 결정하고 일관되게 적용하는 것이 좋습니다.