Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Tkinter 프레임과 그리드로 GUI 레이아웃 구성하기

Tkinter는 파이썬으로 GUI 기반 애플리케이션을 개발할 때 가장 널리 사용되는 표준 라이브러리입니다. 라이브러리에 내장된 다양한 위젯, 함수, 모듈을 활용하면 별도의 외부 도구 없이도 완성도 높은 애플리케이션을 손쉽게 만들 수 있습니다.

다만 애플리케이션의 화면을 어떻게 배치하고 디자인할지 결정하는 일은 생각보다 까다로울 수 있습니다. 다행히 Tkinter는 보기 좋은 GUI를 구성하는 데 유용한 내장 함수와 확장 기능들을 제공합니다.

프레임(Frame) 위젯과 그리드(Grid) 매니저의 역할

일반적으로 Tkinter의 프레임(Frame) 위젯은 애플리케이션 내 모든 위젯을 담는 컨테이너 역할을 하며, 메인 윈도우가 가질 수 있는 속성들을 그대로 상속받습니다.

위젯들의 레이아웃을 설계할 때는 지오메트리 매니저(Geometry Manager)를 사용합니다. 지오메트리 매니저는 위젯의 배치 형태를 잡고 특정 순서대로 화면에 배치하는 역할을 합니다. 그중 그리드(Grid) 지오메트리 매니저는 X축과 Y축 좌표계를 기반으로 위젯을 배치하며, row(행)와 column(열) 속성을 지정하면 원하는 위치 어디든 위젯을 자유롭게 놓을 수 있습니다.

예제: 회원가입 폼 만들기

다음 예제에서는 프레임과 그리드 매니저를 활용해 회원가입(Registration Form) 화면을 구성해 보겠습니다.

# 필요한 라이브러리 임포트
from tkinter import *

# tkinter 프레임 또는 윈도우 인스턴스 생성
win = Tk()

# 윈도우 크기 설정
win.geometry("700x350")

# 프레임 위젯 추가
frame = Frame(win)

# 데이터를 가져와 환영 메시지를 표시하는 함수 정의
def on_key_up():
    name = fname
    frame.pack_forget()
    win.configure(bg="green4")
    Label(win, text="Hey " + fname.get() + " Welcome to TutorialsPoint",
          font=('Segoe UI', 18, 'bold'),
          background="white").pack(pady=30)

# 레이블 위젯 생성
    Label(frame, text="Registration Form",
          font=('Helvetica 16 bold'),
          background="green3").grid(row=5, column=0, pady=30)
frame.pack()

# 첫 번째 입력 필드 추가
Label(frame, text="First Name").grid(row=7, column=0, padx=5)
fname = Entry(frame)
fname.grid(row=10, column=0, padx=10)

# 두 번째 입력 필드 추가
Label(frame, text="Family name").grid(row=12, column=0, padx=5)
sname = Entry(frame)
sname.grid(row=15, column=0, padx=10)

# 이메일 주소 입력 필드 추가
Label(frame, text="Email address").grid(row=17, column=0, padx=5)
email = Entry(frame)
email.grid(row=20, column=0, padx=10)

# 비밀번호 입력 필드 추가
Label(frame, text="Enter a Password").grid(row=22, column=0, padx=5)
password = Entry(frame, show="*")
password.grid(row=25, column=0, padx=10)

# 등록 버튼 생성
Button(frame, text="Register", command=on_key_up).grid(row=15, column=1, padx=5)

win.mainloop()

주요 코드 포인트

  • Frame(win): 메인 윈도우 안에 위젯들을 담을 컨테이너 프레임을 생성합니다.
  • grid(row, column): 각 위젯을 행과 열 좌표에 따라 배치합니다.
  • padx / pady: 위젯 주변에 가로·세로 여백을 추가해 화면 간격을 조절합니다.
  • Entry(show="*"): 비밀번호 입력란처럼 입력 값을 마스킹 처리할 때 사용합니다.

실행 결과

위 코드를 실행하면 이름, 성, 이메일 주소, 비밀번호를 입력할 수 있는 회원가입 폼과 정보를 등록하는 버튼이 함께 표시됩니다.

Tkinter 프레임과 그리드로 GUI 레이아웃 구성하기