How to create a System Tray icon of a Tkinter application?



A System Tray icon is used for showing the application’s running state in the taskbar. It typically shows which application is currently running. The system tray icon is visible in the taskbar.

To create a System Tray icon of a tkinter application, we can use pystray module in Python. It has many inbuilt functions and methods that can be used to configure the system tray icon of the application.

To install pystray in your machine you can type "pip install pystray" command in your shell or command prompt.

To create a System Tray icon, you can follow these steps,

  • Import the required libraries − Pystray, Python PIL or Pillow.

  • Define a function hide_window() to withdraw the window and provide the icon in the system tray.

  • Add and define two menu items, "Show" and "Quit".

  • Add a command in the menu items by defining a function for Show and Quit.

Example

# Import the required libraries
from tkinter import *
from pystray import MenuItem as item
import pystray
from PIL import Image, ImageTk

# Create an instance of tkinter frame or window
win=Tk()
win.title("System Tray Application")

# Set the size of the window
win.geometry("700x350")

# Define a function for quit the window
def quit_window(icon, item):
   icon.stop()
   win.destroy()

# Define a function to show the window again
def show_window(icon, item):
   icon.stop()
   win.after(0,win.deiconify())

# Hide the window and show on the system taskbar
def hide_window():
   win.withdraw()
   image=Image.open("favicon.ico")
   menu=(item('Quit', quit_window), item('Show', show_window))
   icon=pystray.Icon("name", image, "My System Tray Icon", menu)
   icon.run()

win.protocol('WM_DELETE_WINDOW', hide_window)

win.mainloop()

Output

If you will run the above code, it will display a window.

When we close the window it will still appear in the Taskbar as a System Tray icon.


Advertisements