본문 바로가기

[Tkinter] 18강 LabelFrame 위젯으로 그룹 UI 만들기

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


이 강의는 Tkinter GUI 강의 18강입니다

17강에서는
Frame 위젯을 사용해
화면을 영역 단위로 나누는 방법을 배웠습니다.

이번 강의에서는
Frame의 확장 개념인
LabelFrame 위젯을 다룹니다.

이번 강의의 목표는 분명합니다.
관련된 위젯들을
의미 있는 그룹으로 묶어 표현하는 방법을 익히는 것입니다.


LabelFrame 위젯이 필요한 이유

Frame은
화면을 나누기에 아주 좋지만
그 영역이 무엇을 의미하는지
눈으로 바로 알기 어렵습니다.

입력 영역
설정 영역
옵션 선택 영역

이런 구역을
사용자에게 명확히 보여주고 싶을 때
사용하는 것이
LabelFrame입니다.


LabelFrame 위젯의 기본 개념

LabelFrame은
Frame과 동일한 컨테이너 역할을 하지만
제목(Label)을 함께 표시할 수 있습니다.

즉,
“이 영역은 무엇을 위한 공간인가”를
UI로 직접 설명할 수 있습니다.


가장 기본적인 LabelFrame 사용 예제

먼저
LabelFrame의 기본 형태를
아주 단순한 예제로 확인해보겠습니다.

import tkinter as tk


window = tk.Tk()
window.geometry("300x200")


lf = tk.LabelFrame(window, text="사용자 정보")
lf.pack(fill="both", expand=True, padx=10, pady=10)


tk.Label(lf, text="이름").pack(pady=5)
tk.Entry(lf).pack(pady=5)


window.mainloop()

LabelFrame에는
테두리와 함께
제목이 표시됩니다.


LabelFrame은 Frame과 거의 같다

중요한 점은
LabelFrame의 사용 방식이
Frame과 거의 동일하다는 것입니다.

  • pack / grid / place 사용 가능
  • 안에 위젯 배치 가능
  • 컨테이너 역할 동일

차이점은
제목과 테두리가 자동으로 생긴다는 점입니다.


LabelFrame으로 입력 폼 그룹 만들기

LabelFrame은
입력 폼(Form)을 만들 때
특히 유용합니다.

import tkinter as tk


window = tk.Tk()
window.geometry("300x200")


form = tk.LabelFrame(window, text="회원 정보")
form.pack(padx=10, pady=10)


tk.Label(form, text="아이디").grid(row=0, column=0, padx=5, pady=5)
tk.Entry(form).grid(row=0, column=1, padx=5, pady=5)


tk.Label(form, text="비밀번호").grid(row=1, column=0, padx=5, pady=5)
tk.Entry(form).grid(row=1, column=1, padx=5, pady=5)


window.mainloop()

관련된 입력 요소들이
하나의 박스로
자연스럽게 묶입니다.


LabelFrame 안에서도 레이아웃 분리 가능

LabelFrame 역시
Frame이기 때문에
그 안에서 자유롭게 레이아웃을 설계할 수 있습니다.

options = tk.LabelFrame(window, text="옵션 선택")
options.pack(padx=10, pady=10)


tk.Checkbutton(options, text="자동 저장").pack(anchor="w")
tk.Checkbutton(options, text="알림 받기").pack(anchor="w")

옵션 그룹이
명확하게 구분됩니다.


LabelFrame 제목 위치 조절하기

LabelFrame의 제목은
기본적으로 상단 중앙에 표시됩니다.

하지만
labelanchor 옵션을 사용하면
위치를 바꿀 수 있습니다.

lf = tk.LabelFrame(
window,
text="설정",
labelanchor="nw"
)
lf.pack(padx=10, pady=10)

제목을
왼쪽 위에 배치할 수 있습니다.


Frame 대신 LabelFrame을 쓰면 좋은 경우

다음과 같은 경우에는
Frame보다
LabelFrame이 더 적합합니다.

  • 입력 폼 그룹
  • 설정 묶음
  • 옵션 선택 영역
  • 의미를 명확히 보여주고 싶은 영역

반대로
단순한 레이아웃 분리만 필요하다면
Frame이 더 적합합니다.


LabelFrame은 UI 가독성을 높인다

LabelFrame을 사용하면
UI 구조가
사용자 눈에도 명확해집니다.

“어디에 무엇을 입력해야 하는지”
“이 옵션이 어떤 범주인지”
바로 이해할 수 있습니다.


LabelFrame 사용 시 팁

레이아웃이 헷갈릴 때는
Frame 때와 마찬가지로
배경색을 임시로 넣어보면 도움이 됩니다.

tk.LabelFrame(window, text="테스트", bg="lightyellow")

이번 강의 핵심 정리

이번 강의에서 꼭 기억해야 할 내용입니다.

  • LabelFrame은 제목이 있는 Frame이다
  • 관련 위젯을 그룹으로 묶을 수 있다
  • 입력 폼과 설정 UI에 매우 적합하다
  • UI 가독성을 크게 높여준다

다음 강의 예고

다음 강의에서는
위젯 크기 고정과 자동 확장 개념을 배웁니다.

이제부터는
레이아웃이
창 크기에 어떻게 반응하는지도
제어할 수 있게 됩니다.


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

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

목차