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

Tkinter 애플리케이션을 시스템 트레이(작업 표시줄)에 표시하는 방법

시스템 트레이(System Tray) 애플리케이션은 항상 작업 표시줄에 상주하며, 사용자가 창을 닫아도 백그라운드에서 계속 실행됩니다. 이러한 애플리케이션을 쉽게 식별할 수 있도록 아이콘이나 이미지를 함께 제공하는 것이 일반적입니다.

Tkinter로 만든 애플리케이션에 시스템 트레이 아이콘을 추가하려면 Python의 pystray 모듈을 활용할 수 있습니다. 이 모듈은 트레이 아이콘을 구성하고 제어할 수 있는 다양한 내장 함수와 메서드를 제공합니다.

pystray 설치하기

pystray를 사용하려면 먼저 설치가 필요합니다. 셸(shell) 또는 명령 프롬프트에서 다음 명령어를 입력하세요.

pip install pystray

시스템 트레이 아이콘 만들기

다음 단계에 따라 Tkinter 애플리케이션의 시스템 트레이 아이콘을 구현할 수 있습니다.

  • 필요한 라이브러리를 임포트합니다 — pystray, 그리고 이미지 처리를 위한 PIL(Pillow).

  • 창을 숨기고(hide) 트레이에 아이콘을 등록하는 hide_window() 함수를 정의합니다.

  • 트레이 메뉴에 "Show"(창 보이기)와 "Quit"(종료) 두 개의 메뉴 항목을 추가합니다.

  • Show와 Quit 각각의 동작을 수행하는 함수를 정의하여 메뉴 항목에 연결합니다.

예제 코드

# 필요한 라이브러리 임포트
from tkinter import *
from pystray import MenuItem as item
import pystray
from PIL import Image, ImageTk

# Tkinter 프레임(윈도우) 인스턴스 생성
win=Tk()
win.title("System Tray Application")

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

# 윈도우를 종료하는 함수
def quit_window(icon, item):
    icon.stop()
    win.destroy()

# 숨겨진 윈도우를 다시 표시하는 함수
def show_window(icon, item):
    icon.stop()
    win.after(0,win.deiconify())

# 윈도우를 숨기고 작업 표시줄(트레이)에 아이콘 표시
def hide_window():
    win.withdraw()
    image=Image.open("image.ico")
    menu=(item('Quit', quit_window), item('Show', show_window))
    icon=pystray.Icon("name", image, "title", menu)
    icon.run()

win.protocol('WM_DELETE_WINDOW', hide_window)

win.mainloop()

실행 결과

위 코드를 실행하면 여러 위젯과 요소가 포함된 애플리케이션 창이 화면에 나타납니다.

Tkinter 애플리케이션을 시스템 트레이(작업 표시줄)에 표시하는 방법

이후 창을 닫으면(X 버튼 클릭) 애플리케이션이 완전히 종료되지 않고, 대신 해당 앱의 아이콘이 작업 표시줄의 시스템 트레이 영역에 표시됩니다. 트레이 아이콘을 우클릭하면 "Show"와 "Quit" 메뉴를 통해 창을 다시 열거나 프로그램을 종료할 수 있습니다.