Hi everyone! I am trying to make an application in Tkinter that goes to Tray instead of closing. I have programmed the whole interface, including notifications in Tkinter. The problem is, I could not find any library to make the tray icon itself, so I built a tray icon class using wxPython that runs on a separate thread. So basically now, I'm withdrawing the main Tk window, and then showing the tray icon. The core problem, however, is that while the system tray icon (aka wx main loop) is active, the main program built in Tk completely freezes, including it's notifications. So, my question is, how to make the tray icon thread run in the background, and still have my main program functional?
class trayIcon(object): def __init__(self): #setup app self.app=wx.PySimpleApp() #setup icon object self.actualIcon = wx.Icon(icon, wx.BITMAP_TYPE_ICO) #setup taskbar icon self.tbicon = wx.TaskBarIcon() self.tbicon.SetIcon(self.actualIcon, name) #add taskbar icon event wx.EVT_TASKBAR_RIGHT_UP(self.tbicon, self.right) wx.EVT_TASKBAR_LEFT_DCLICK(self.tbicon, self.left) self.app.MainLoop() def right(self,event): global shouldQuit self.app.ExitMainLoop() shouldQuit=True def left(self,event): self.app.ExitMainLoop() class Thread(threading.Thread): def __init__(self, main): threading.Thread.__init__(self) self.setName("wx") self.main=main def run(self): self.Icon=trayIcon() and here is how I defined it in the main program (must state that this is a class method itself): def toTray(self): global shouldQuit self.main.withdraw() self.myTray=Thread(self.Main) self.myTray.start() while self.myTray.isAlive(): pass if shouldQuit: self.Quit() else: self.main.deiconify() I'm calling the isAlive() method to wait for the wx loop to be ended through it's controls, and then show the main window again; I know this holds up the function in place, but that should not hold the entire program should it? I must state that using wx to do the entire interface would not be a choice, as I find it a lot harder to use than Tk. Another solution to the problem would be pointing me to a more convenient tray icon constructor (instructions how to use would be greatly appreciated) if you know any. I hope someone can help me. Thank you for your time and support. Regards, Andrei Nemes
_______________________________________________ Tkinter-discuss mailing list Tkinter-discuss@python.org http://mail.python.org/mailman/listinfo/tkinter-discuss