
이 강의는 Tkinter GUI 강의 17강입니다
16강에서는
pack, grid, place
세 가지 레이아웃을 비교하며
언제 어떤 레이아웃을 선택해야 하는지 배웠습니다.
이번 강의에서는
Frame 위젯을 사용해
화면을 영역 단위로 나누는 방법을 배웁니다.
이번 강의의 목표는 분명합니다.
하나의 창을
여러 개의 논리적인 영역으로 분리하는 감각을 잡는 것입니다.
Frame 위젯이 필요한 이유
이제부터는
위젯 개수가 점점 늘어납니다.
버튼, 입력창, 라벨을
한 화면에 모두 올리기 시작하면
코드도 복잡해지고
레이아웃 관리도 어려워집니다.
이 문제를 해결하는 것이
Frame 위젯입니다.
Frame 위젯의 기본 개념
Frame은
위젯을 담는 컨테이너입니다.
화면에 직접 보이는 위젯이 아니라
다른 위젯들을 묶는 역할을 합니다.
쉽게 말해
“작은 창을 하나 더 만든다”
라고 생각하면 됩니다.
가장 기본적인 Frame 사용 예제
먼저
Frame이 어떤 역할을 하는지
아주 단순한 예제로 확인해보겠습니다.
import tkinter as tk
window = tk.Tk()
window.geometry("300x200")
frame = tk.Frame(window, bg="lightgray")
frame.pack(fill="both", expand=True)
tk.Label(frame, text="Frame 안의 Label").pack(pady=20)
window.mainloop()
Frame은
window 안에 들어가고
Label은
Frame 안에 들어갑니다.
Frame을 사용하면 뭐가 달라질까
Frame을 사용하면
레이아웃을 분리해서 관리할 수 있습니다.
각 Frame은
자기만의 공간을 가지고
그 안에서 레이아웃을 따로 적용할 수 있습니다.
이게
아주 중요한 포인트입니다.
Frame으로 화면을 위아래로 나누기
Frame을 사용해
화면을
상단 영역과 하단 영역으로 나눠보겠습니다.
import tkinter as tk
window = tk.Tk()
window.geometry("300x200")
top_frame = tk.Frame(window, bg="lightblue", height=80)
top_frame.pack(fill="x")
bottom_frame = tk.Frame(window, bg="lightgreen")
bottom_frame.pack(fill="both", expand=True)
tk.Label(top_frame, text="상단 영역").pack(pady=20)
tk.Label(bottom_frame, text="하단 영역").pack(pady=20)
window.mainloop()
이렇게 하면
하나의 창이
두 개의 영역으로 명확히 나뉩니다.
Frame마다 다른 레이아웃 사용하기
Frame을 사용하는
가장 큰 이유 중 하나는
레이아웃을 섞어 쓸 수 있다는 점입니다.
같은 Frame 안에서는
pack과 grid를 함께 사용할 수 없지만
Frame이 다르면 가능합니다.
예제: 상단은 pack, 하단은 grid
import tkinter as tk
window = tk.Tk()
window.geometry("300x200")
top = tk.Frame(window)
top.pack(fill="x")
bottom = tk.Frame(window)
bottom.pack(fill="both", expand=True)
tk.Label(top, text="제목").pack(pady=10)
tk.Label(bottom, text="이름").grid(row=0, column=0)
tk.Entry(bottom).grid(row=0, column=1)
tk.Label(bottom, text="나이").grid(row=1, column=0)
tk.Entry(bottom).grid(row=1, column=1)
window.mainloop()
이제
레이아웃 제약에서
완전히 벗어났습니다.

Frame을 사용하면 코드가 정리된다
Frame을 기준으로
UI를 나누면
코드도 자연스럽게 묶입니다.
- 상단 UI 코드
- 입력 UI 코드
- 버튼 영역 코드
이렇게 나누면
읽기도 쉽고
유지보수도 쉬워집니다.
Frame은 구조 설계의 시작이다
지금까지는
위젯을 배치하는 법을 배웠다면
이제부터는
화면을 설계하는 단계로 넘어갑니다.
Frame은
Tkinter UI 구조의
기본 뼈대입니다.
Frame 사용 시 주의할 점
Frame 자체는
보이지 않는 위젯입니다.
레이아웃이 헷갈릴 때는
임시로 배경색을 지정해
영역을 눈으로 확인하는 것이 좋습니다.
tk.Frame(window, bg="red")
Frame을 언제 사용하면 좋은가
Frame은
사실상
대부분의 Tkinter 프로그램에서 사용됩니다.
특히 다음과 같은 경우에 필수입니다.
- 레이아웃이 복잡해질 때
- 여러 레이아웃을 함께 써야 할 때
- 화면을 논리적으로 나누고 싶을 때
이번 강의 핵심 정리
이번 강의에서 꼭 기억해야 할 내용입니다.
- Frame은 위젯을 담는 컨테이너다
- 화면을 영역 단위로 나눌 수 있다
- Frame마다 다른 레이아웃을 사용할 수 있다
- 복잡한 UI의 출발점이다
다음 강의 예고
다음 강의에서는
LabelFrame 위젯을 사용해 그룹 UI를 만드는 방법을 배웁니다.
이제부터는
UI가 점점
“프로그램처럼” 보이기 시작할 겁니다.
'⚙️ Python > 🪟 Tkinter 기초' 카테고리의 다른 글
| [Tkinter] 19강 위젯 크기 고정과 자동 확장 이해하기 (0) | 2026.01.30 |
|---|---|
| [Tkinter] 18강 LabelFrame 위젯으로 그룹 UI 만들기 (0) | 2026.01.29 |
| [Tkinter] 16강 pack vs grid vs place 레이아웃 완전 비교 (0) | 2026.01.28 |
| [Tkinter] 15강 place 레이아웃 개념 이해하기 (0) | 2026.01.28 |
| [Tkinter] 14강 grid 레이아웃 개념 이해하기 (0) | 2026.01.27 |