Tkinter Frame 위젯이란?
Tkinter의 Frame 위젯은 여러 개의 위젯을 하나의 프레임 안에 그룹화할 때 매우 유용하게 사용됩니다. Frame은 부모 창(윈도우)에 적용되는 모든 함수와 속성을 그대로 포함하기 때문에, 마치 독립적인 작은 창처럼 동작시킬 수 있습니다.
Frame 위젯을 생성하려면 Frame 클래스의 객체를 인스턴스화하면 됩니다. 창에 Frame 위젯을 한 번 정의해 두면, 이후에는 어떤 위젯이든 자유롭게 골라서 해당 프레임 안에 배치할 수 있습니다.
Frame 위젯의 주요 장점
- 관련된 위젯들을 논리적으로 묶어 UI 구조를 깔끔하게 정리할 수 있습니다.
- 프레임 단위로 배치 관리자(pack, grid 등)를 따로 적용할 수 있어 레이아웃 제어가 쉬워집니다.
- 프레임마다 배경색, 테두리 등 스타일을 개별적으로 지정할 수 있습니다.
예제 코드
다음 예제에서는 Frame 위젯을 하나 만들고, 그 안에 라벨(Label), 입력창(Entry), 버튼(Button)을 배치해 보겠습니다.
# 필요한 라이브러리를 임포트합니다
from tkinter import *
from tkinter import ttk
# tkinter 프레임 또는 윈도우의 인스턴스를 생성합니다
win = Tk()
# 윈도우 크기를 설정합니다
win.geometry("700x250")
def on_click():
label["text"] = "Hello " + str(entry.get())
# Frame 위젯을 생성합니다
frame = Frame(win, width=400, height=300)
# 프레임 위젯 안에 라벨을 추가합니다
label = Label(frame, text="Enter your name", font=('Calibri 13'))
label.pack(pady=10)
# Entry(입력창) 위젯을 추가합니다
entry = Entry(frame, width=25)
entry.pack()
# 버튼을 생성하고 클릭 이벤트를 연결합니다
ttk.Button(frame, text="Click Me", command=on_click).pack()
frame.pack()
win.mainloop()실행 결과
위 코드를 실행하면 Entry 위젯, 라벨 위젯, 버튼이 하나의 프레임 안에 담긴 창이 화면에 나타납니다.

텍스트 필드에 이름을 입력한 뒤 버튼을 클릭하면, 입력한 이름과 함께 인사 메시지가 화면에 표시됩니다.

정리
이처럼 Tkinter의 Frame 위젯을 활용하면 여러 위젯을 하나의 그룹으로 묶어 관리할 수 있으며, 복잡한 GUI 애플리케이션에서도 레이아웃을 체계적으로 구성할 수 있습니다. 특히 위젯의 수가 많아질수록 Frame으로 영역을 나누는 방식이 코드 가독성과 유지보수성 면에서 큰 도움이 됩니다.