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

Tkinter에서 Tk와 Toplevel 클래스의 차이점은 무엇일까?

Tkinter 애플리케이션의 모든 창은 Tk 객체를 먼저 초기화하는 것부터 시작됩니다. Tk는 Tkinter 프로그램의 가장 기본적인 구성 요소로, 애플리케이션을 인스턴스화하는 역할을 합니다. 즉, 모든 위젯이 배치되는 메인 애플리케이션 창과 같은 기본 뼈대를 만들어 주는 핵심 클래스입니다.

Toplevel 클래스란 무엇인가?

반면 Toplevel 클래스는 메인 애플리케이션의 내부 위젯들과 상호작용하며 통신할 수 있도록 도와주는 역할을 합니다. 대표적인 예가 바로 Toplevel 윈도우로, 애플리케이션의 메인 창 외에 별도의 자식(child) 창을 표시할 때 사용됩니다.

Toplevel 윈도우는 Tk와 거의 동일하게 작동합니다. 마찬가지로 다양한 위젯을 포함할 수 있고, 독자적인 기능들을 추가할 수도 있습니다. 다만 중요한 차이점은 Toplevel은 반드시 기존의 Tk(또는 다른 Toplevel) 인스턴스를 부모로 가져야 한다는 점입니다.

예제 코드

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

# Tkinter 프레임 인스턴스 생성
win = Tk()

# 창 크기 설정
win.geometry("700x350")

# 창의 기본 배경색 설정
win.config(bg= '#acc7df')

def open_win():
    # Toplevel 윈도우를 여는 함수
    top = Toplevel(win)
    top.geometry("700x250")
    top.title("Child Window")
    # Toplevel 윈도우에 라벨 생성
    Label(top, text= "Hello World!")

Button(win, text= "Click Me", background= "white", foreground= "red3", font= ('Helvetica 13 bold'), command= open_win).pack(pady= 50)
win.mainloop()

실행 결과

위 코드를 실행하면 하나의 버튼이 포함된 메인 창이 화면에 나타납니다.

Tkinter에서 Tk와 Toplevel 클래스의 차이점은 무엇일까?

이제 "Click Me" 버튼을 클릭해 보세요. 그러면 메인 창 위에 별도의 자식 창(Toplevel)이 열리는 것을 확인할 수 있습니다.

Tkinter에서 Tk와 Toplevel 클래스의 차이점은 무엇일까?

정리

간단히 요약하면, Tk는 애플리케이션의 루트(root) 창을 생성하는 필수 클래스이며, Toplevel은 메인 창에 종속된 추가 창을 만들 때 사용하는 클래스입니다. 두 클래스를 적절히 활용하면 다중 창 환경을 갖춘 데스크톱 애플리케이션을 손쉽게 개발할 수 있습니다.