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

Tkinter 애플리케이션에서 Frame 클래스 상속으로 속성 재사용하기

객체지향 프로그래밍(OOP) 패러다임에서 상속(Inheritance)은 기반 클래스(base class)가 가진 속성과 기능을 파생 클래스(derived class)가 물려받아 사용할 수 있게 해주는 핵심 개념입니다.

이 개념을 Tkinter 애플리케이션에 적용하면, 기반 클래스에 정의된 프레임의 다양한 속성 — 배경색(bg), 전경색(fg), 글꼴(font) 등 — 을 파생 클래스나 새로운 프레임에 그대로 물려받아 활용할 수 있습니다.

상속을 지원하려면 먼저 높이(height), 너비(width), 배경색(bg), 전경색(fg), 글꼴(font)과 같은 프레임의 기본 속성들을 담고 있는 클래스를 정의해야 합니다. 이렇게 만들어 둔 클래스를 상속하면, 동일한 스타일의 프레임을 반복적인 코드 작성 없이 손쉽게 여러 개 생성할 수 있다는 큰 장점이 있습니다.

예제 코드

# Import Tkinter Library
from tkinter import *

# Create an instance of Tkinter frame
win= Tk()

# Set the size of the application window
win.geometry("700x350")

# Create a class to define the frame
class NewFrame(Frame):
    def __init__(self, win):
        super().__init__()
        self["height"] = 200
        self["width"] = 200
        self["bd"] = 10
        self["relief"] = RAISED
        self["bg"] = "#aa11bb"

# Create Frame object
frame_a= NewFrame(win)
frame_b= NewFrame(win)
frame_a.grid(row=0, column=0)
frame_b.grid(row=0, column=1)

win.mainloop()

코드 설명

  • NewFrame 클래스는 Tkinter의 Frame 클래스를 상속하여 정의됩니다.
  • super().__init__()을 호출해 부모 클래스의 초기화 과정을 먼저 수행합니다.
  • 이후 높이와 너비를 각각 200으로 지정하고, 테두리 두께(bd)를 10으로, RAISED 옵션으로 입체적인 테두리 모양을 설정합니다.
  • 배경색은 보라색 계열인 #aa11bb로 지정되어, 이 클래스로 생성되는 모든 프레임에 동일하게 적용됩니다.
  • frame_aframe_b 두 객체를 같은 클래스로 생성한 뒤, grid() 메서드를 이용해 윈도우 안에 나란히 배치합니다.

실행 결과

위 코드를 실행하면 하나의 윈도우 안에 클래스에서 정의한 동일한 속성(크기, 테두리, 배경색)을 가진 두 개의 프레임이 표시됩니다. 이처럼 상속을 활용하면 일관된 디자인의 UI 컴포넌트를 효율적으로 재사용할 수 있습니다.

Tkinter 애플리케이션에서 Frame 클래스 상속으로 속성 재사용하기