
이 강의는 Tkinter GUI 강의 13강입니다.
12강에서는 pack 레이아웃의 기본 개념과 동작 방식을 이해했습니다.
이번 강의에서는 pack이 제공하는 옵션(option)을 사용해
위젯의 위치와 여백을 조절하는 방법을 배웁니다.
이번 강의의 목표는 명확합니다.
pack 옵션을 활용해 화면을 의도대로 정렬하는 것입니다.
pack 옵션이 필요한 이유
기본 pack()만 사용하면
위젯은 위에서 아래로 단순히 쌓입니다.
하지만 실제 화면에서는
다음과 같은 요구가 생깁니다.
- 위젯 사이에 여백을 주고 싶다
- 왼쪽이나 오른쪽에 붙이고 싶다
- 화면을 꽉 채우게 만들고 싶다
이럴 때 사용하는 것이
pack 옵션입니다.
side 옵션으로 방향 지정하기
side 옵션은
위젯을 어느 방향에 붙일지 정합니다.
label.pack(side="left")
사용할 수 있는 값은 다음과 같습니다.
- "top" (기본값)
- "bottom"
- "left"
- "right"
예제를 살펴보겠습니다.
import tkinter as tk
window = tk.Tk()
window.geometry("300x200")
tk.Label(window, text="왼쪽").pack(side="left")
tk.Label(window, text="오른쪽").pack(side="right")
window.mainloop()
위젯이
양쪽으로 나뉘어 배치됩니다.
padx와 pady로 여백 주기
padx, pady는
위젯 주변에 여백(공백)을 줍니다.
label.pack(padx=10, pady=10)
- padx: 좌우 여백
- pady: 상하 여백
여백을 주면
화면이 훨씬 보기 좋아집니다.
fill 옵션으로 공간 채우기
fill 옵션은
위젯이 남은 공간을 얼마나 채울지를 정합니다.
label.pack(fill="x")
사용 가능한 값은 다음과 같습니다.
- "x" 가로 방향 채우기
- "y" 세로 방향 채우기
- "both" 가로·세로 모두 채우기
예제입니다.
tk.Label(window, text="가로 채우기").pack(fill="x")
expand 옵션의 의미
expand=True는
남은 공간을 해당 위젯에 할당하겠다는 의미입니다.
label.pack(expand=True)
expand는
fill과 함께 사용하는 경우가 많습니다.
expand는
fill과 함께 사용하는 경우가 많습니다.
이렇게 하면
창 크기가 바뀔 때 위젯도 함께 커집니다.
pack 옵션 조합 예제
여러 옵션을
함께 사용한 예제입니다.
import tkinter as tk
window = tk.Tk()
window.geometry("300x200")
tk.Label(window, text="상단", bg="lightgray").pack(fill="x", pady=5)
tk.Label(window, text="중앙", bg="lightblue").pack(expand=True)
tk.Label(window, text="하단", bg="lightgray").pack(fill="x", pady=5)
window.mainloop()
이 예제에서는
상단과 하단은 고정,
중앙은 남은 공간을 차지합니다.
pack 옵션 사용 시 주의점
pack 옵션은
한 위젯에만 적용됩니다.
또한 pack과 grid는
같은 부모 안에서 함께 사용할 수 없습니다.
이 규칙을 어기면
오류가 발생합니다.
이번 강의 핵심 정리
이번 강의에서 꼭 기억해야 할 내용입니다.
- side로 위젯 방향을 정한다
- padx, pady로 여백을 준다
- fill로 공간을 채운다
- expand로 남은 공간을 할당한다
이 네 가지 조합으로
대부분의 간단한 화면을 구성할 수 있습니다.
다음 강의 예고
다음 강의에서는
grid 레이아웃의 개념을 배우고
pack과 어떤 차이가 있는지 비교합니다.
이제 GUI 화면이
정렬 기준을 갖추기 시작합니다.
'⚙️ Python > 🪟 Tkinter 기초' 카테고리의 다른 글
| [Tkinter] 15강 place 레이아웃 개념 이해하기 (0) | 2026.01.28 |
|---|---|
| [Tkinter] 14강 grid 레이아웃 개념 이해하기 (0) | 2026.01.27 |
| [Tkinter] 12강 pack 레이아웃 개념 이해하기 (0) | 2026.01.26 |
| [Tkinter] 11강 여러 위젯 조합해서 화면 구성하기 (0) | 2026.01.26 |
| [Tkinter] 10강 입력값 검증 처리하기 (0) | 2026.01.25 |