Tkinter 창은 mainloop() 함수를 통해 생성되고 실행됩니다. mainloop() 함수는 사용자가 애플리케이션을 직접 종료하기 전까지 계속 실행되며 프로그램의 전체 동작을 관리합니다.
Tkinter 창을 다른 모든 창보다 항상 위에 유지하려면 win.after(duration, function()) 함수를 반복적으로 호출하는 방식을 사용할 수 있습니다. 이 함수가 루프 안에서 주기적으로 실행되면서 메인 창을 지속적으로 맨 앞으로 올려 다른 창들 위에 항상 나타나도록 만듭니다.
예제 코드
# 필요한 라이브러리 임포트
from tkinter import *
from tkinter import ttk
# tkinter 프레임 또는 창 인스턴스 생성
win = Tk()
# 창 크기 설정
win.geometry("700x350")
# 창을 맨 앞으로 가져오는 함수 정의
def lift_window():
win.lift()
win.after(1000, lift_window)
# 레이블 위젯 추가
Label(win, text="Hey Folks, Welcome to TutorialsPoint✨", font=('Aerial 18 italic')).place(x=130, y=150)
lift_window()
win.mainloop()코드 설명
lift_window() 함수 내부에서 win.lift()가 호출되어 현재 창을 윈도우 스택의 최상위로 올립니다. 이후 win.after(1000, lift_window)가 1초(1000밀리초) 후에 자기 자신을 다시 호출하도록 예약하여, 창이 계속해서 맨 앞에 위치하도록 유지합니다.
실행 결과
위 코드를 실행하면 다른 어떤 창을 활성화하더라도 항상 맨 앞에 표시되는 Tkinter 창을 확인할 수 있습니다.
참고: topmost 속성을 사용하는 대안
반복 호출 대신 창의 topmost 속성을 설정하는 더 간단한 방법도 있습니다.
win.attributes('-topmost', True)이 속성을 True로 설정하면 별도의 반복 처리 없이 창이 항상 다른 창들 위에 고정됩니다. 상황에 따라 두 방법 중 더 적합한 것을 선택하여 사용하시면 됩니다.