0

I have App class and I want to call "change_icon" definition from inside App class. In current situation it is only can be triggered with menu item of pystray.

Below is my code:

from pystray import MenuItem as item
import pystray
from PIL import Image
import tkinter as tk


class App:
    def __init__(self, window):
        self.window = window
        self.window.title("Welcome")


def quit_window(icon, item):
    icon.stop()
    window.destroy()

def change_icon(icon, item):
    icon.icon = Image.open("icon_notification.ico")

def show_window(icon, item):
    icon.stop()
    window.after(0,window.deiconify)

def withdraw_window():  
    window.withdraw()
    image = Image.open("icon.ico")
    menu = (item('Quit', quit_window), item('Show', show_window), item("Change Icon", change_icon))
    icon = pystray.Icon("name", image, "title", menu)
    icon.run()


if __name__ == "__main__":
    window = tk.Tk()
    App(window)
    window.protocol('WM_DELETE_WINDOW', withdraw_window)
    window.mainloop()

0 Answers0