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

Tkinter 창의 종료(X) 버튼 비활성화하는 방법

Tkinter 창 상단에 있는 최소화·최대화·종료 같은 창 제어 아이콘은 운영체제의 윈도우 매니저(Window Manager)가 관리합니다. 이 제어 아이콘의 동작을 제어하려면 Tkinter에서 기본으로 제공하는 내장 함수를 활용할 수 있습니다.

특히 종료(X) 버튼을 비활성화하려면 protocol() 메서드를 정의해야 합니다. protocol() 메서드는 윈도우 매니저와 애플리케이션 간의 통신 규약을 설정하는 역할을 하며, 여기에 빈 함수(아무 동작도 하지 않는 함수)를 지정하면 종료 버튼이 눌려도 창이 닫히지 않도록 만들 수 있습니다.

예제 코드

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

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

# 창 크기 설정
win.geometry("750x250")

# 창을 닫는 함수 정의
def close_win():
    win.destroy()

# 아무 동작도 수행하지 않는 함수 정의
def disable_event():
    pass

# 창을 닫는 버튼 생성
btn = ttk.Button(win, text="클릭하여 창 닫기", command=close_win)
btn.pack()

# 종료(X) 버튼 비활성화
win.protocol("WM_DELETE_WINDOW", disable_event)

win.mainloop()

실행 결과

위 코드를 실행하면 종료(X) 버튼이 비활성화된 창이 화면에 나타납니다. 사용자가 X 버튼을 클릭해도 창은 닫히지 않습니다.

Tkinter 창의 종료(X) 버튼 비활성화하는 방법

창을 닫으려면 "클릭하여 창 닫기" 버튼을 누르면 됩니다. 이처럼 protocol() 메서드를 활용하면 사용자가 실수로 창을 닫는 것을 방지하거나, 창을 닫기 전에 저장 확인 등 특정 작업을 먼저 수행하도록 유도할 수 있어 실용적인 GUI 개발에 유용합니다.