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

Windows 10에서 Tkinter 창을 항상 화면 맨 위에 유지하는 방법

Tkinter 애플리케이션에서 위젯을 화면에 표시하려면 일반적으로 mainloop() 함수를 사용합니다. 그런데 실제로 앱을 사용하다 보면 Tkinter 창이 다른 프로그램이나 창 뒤로 숨겨지는 경우가 자주 발생합니다. 다른 작업으로 전환했다가 다시 Tkinter 창을 찾아 돌아오는 것이 번거롭게 느껴질 수 있습니다.

이 문제는 win.lift() 메서드를 활용한 함수를 만들고, 이를 주기적으로 반복 호출하면 해결할 수 있습니다. 반복 처리 과정에서 win.after(2000, 함수명)을 실행하면 2초마다 창을 최상위로 올려, Tkinter 창이 항상 다른 모든 창 위에 유지되도록 만들 수 있습니다.

예제 코드

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

# tkinter 프레임(윈도우) 인스턴스 생성
win = Tk()

# 윈도우 크기 설정
win.geometry("700x350")

def stay_on_top():
    win.lift()
    win.after(2000, stay_on_top)

# 레이블 위젯 추가
Label(win, text="이 창은 항상 맨 위에 유지됩니다", font=('Aerial 14')).pack(pady=30, anchor=CENTER)

# 창을 맨 위에 유지하는 함수 호출
stay_on_top()

win.mainloop()

실행 결과

위 코드를 실행하면 자동으로 생성된 창이 다른 모든 창 위에 계속 유지되는 것을 확인할 수 있습니다. 사용자가 다른 프로그램을 열거나 창을 전환해도 Tkinter 창은 2초마다 자동으로 최상위로 올라오기 때문에 항상 화면에서 볼 수 있습니다.

코드 동작 원리

lift() 메서드는 해당 창을 윈도우 스택의 가장 위로 올리는 역할을 하며, after(2000, stay_on_top)은 2000밀리초(2초) 후에 stay_on_top 함수를 다시 호출하는 스케줄링 기능입니다. 이 두 가지가 결합되어 창이 지속적으로 맨 위에 위치하게 됩니다. 만약 갱신 주기를 조절하고 싶다면 after()의 첫 번째 인자 값을 변경하면 됩니다.