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()실행 결과
위 코드를 실행하면 버튼 하나가 배치된 메인 창이 화면에 나타납니다.

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