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

Tkinter로 사용자 정의 팝업 대화 상자를 구현하는 올바른 방법

Tkinter에는 파이썬에 기본으로 구현되어 있어 즉시 사용할 수 있는 다양한 내장 함수와 모듈이 포함되어 있습니다. 그중 MessageBox 모듈은 별도의 설정 없이 관련 함수만 호출하면 어떤 애플리케이션에서든 손쉽게 활용할 수 있는 대표적인 모듈입니다.

다만 이러한 기본 제공 패키지에는 한 가지 제약이 있습니다. 바로 MessageBox 템플릿을 임의로 수정하거나 변경할 수 없다는 점입니다. 따라서 자신만의 디자인과 동작을 담은 사용자 정의 팝업 MessageBox를 만들고 싶다면 아래 단계를 따르는 것이 좋습니다.

  • 버튼을 생성하고 command 옵션에 함수를 연결합니다.
  • Toplevel 윈도우를 생성하는 함수를 정의하고, 그 안에 필요한 위젯들을 추가합니다.
  • Toplevel 윈도우에 확인용 레이블 텍스트와 선택 버튼을 배치합니다.
  • 버튼 명령을 통해 메인 윈도우에 결과 메시지가 표시되도록 상호작용을 구성합니다.

예제 코드

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

# tkinter 프레임 인스턴스 생성
win = Tk()
# 윈도우 크기 설정
win.geometry("700x250")

# 선택 결과를 처리하는 함수
def choice(option):
    pop.destroy()
    if option == "yes":
        label.config(text="Hello, How are You?")
    else:
        label.config(text="You have selected No")

# 팝업 창을 여는 함수
def click_fun():
    global pop
    pop = Toplevel(win)
    pop.title("Confirmation")
    pop.geometry("700x250")
    pop.config(bg="green3")
    # 레이블 텍스트 생성
    label = Label(pop, text="Would You like to Proceed?", bg="green3", fg="white", font=('Aerial', 12))
    label.pack(pady=20)
    # 프레임 추가
    frame = Frame(pop, bg="green3")
    frame.pack(pady=10)
    # 선택용 버튼 추가
    button1 = Button(frame, text="Yes", command=lambda: choice("yes"), bg="green")
    button1.grid(row=0, column=1)
    button2 = Button(frame, text="No", command=lambda: choice("no"), bg="green")
    button2.grid(row=0, column=2)

# 메인 윈도우에 레이블 위젯 생성
label = Label(win, text="", font=('Aerial', 14))
label.pack(pady=40)

# Tkinter 버튼 생성
ttk.Button(win, text="Click Here", command=click_fun).pack()

win.mainloop()

실행 결과

위 코드를 실행하면 버튼 하나가 배치된 메인 창이 화면에 나타납니다.

Tkinter로 사용자 정의 팝업 대화 상자를 구현하는 올바른 방법

버튼을 클릭하면 초록색 배경의 사용자 정의 팝업 MessageBox가 새 창으로 표시됩니다. 이처럼 Toplevel 윈도우를 활용하면 기본 MessageBox의 제약 없이 원하는 색상, 폰트, 위젯 구성을 자유롭게 적용할 수 있습니다.

Tkinter로 사용자 정의 팝업 대화 상자를 구현하는 올바른 방법