System Tray app chạy ngầm trên taskbar. Đóng cửa sổ → app vẫn chạy trên taskbar. Dùng module pystray + PIL/Pillow.
Cài đặt: pip install pystray pillow.
Các bước
- Import: Pystray, PIL
- Hàm
hide_window(): withdraw window, tạo system tray icon - Menu items: "Show", "Quit" với command functions
Ví dụ
from tkinter import *
from pystray import MenuItem as item
import pystray
from PIL import Image, ImageTk
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()
Kết quả
Cửa sổ app bình thường. Click nút close (X) → cửa sổ ẩn, icon xuất hiện system tray. Right-click tray icon → menu Show/Quit.

Lưu ý: Cần file image.ico icon. win.withdraw() ẩn cửa sổ, win.deiconify() hiện lại. protocol('WM_DELETE_WINDOW') override hành vi nút X.