Last active
December 21, 2019 04:41
-
-
Save thomaschaaf/7344891 to your computer and use it in GitHub Desktop.
Basic wx Application which shows a snake in the System Tray and on open and close of the context menu displays a message in the console.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env pythonw | |
import wx | |
import wx.lib.embeddedimage | |
WXPdemo = wx.lib.embeddedimage.PyEmbeddedImage( | |
"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAWlJ" | |
"REFUWIW1V1sSwjAIBMebeBU9db2KZ8EPmxbCI4TUnXGskWaXDQktwhjErjERP4XRhER08iPi" | |
"5SKiyQR5JyI7xxB3j7wn5GI6V2hFxM0gJtjYANFBiIjQu7L/1lYlwR0QxLDZhE0II1+CtwRC" | |
"RI8riBva7DL7CC9VAwDbbxwKtdDXwBi7K+1zCP99T1vDFedd8FBwYd6BCAUXuACEF7QsbET/" | |
"FaHs+gDQw4vOLNHkMojAnTw8nlNipIiwmR0DCXJbjCXkFCAL23BnpQgRWt1EMbyujCK9AZzZ" | |
"f+b3sX0oSqJQ6EorFeT4NiL6Wtj0+LXnQAzThYoAAsN6ehqR3sHExmcEqGeFApQLcTvm5Kt9" | |
"wkHGgb+RZwSkyc1dwOcpCtCoNKSz6FRCUQ3o7Nn+5Y+Lg+y5CIXlcyAk99ziiQS32+svz/UY" | |
"vClJoLpIC8gi+VwwfDecEiEtT/WZTJDf94uk1Ru8vbz0cvoF7S2DnpeVL9UAAAAASUVORK5C" | |
"YII=") | |
class DemoTaskBarIcon(wx.TaskBarIcon): | |
TBMENU_RESTORE = wx.NewId() | |
TBMENU_CLOSE = wx.NewId() | |
TBMENU_CHANGE = wx.NewId() | |
TBMENU_REMOVE = wx.NewId() | |
def __init__(self, frame): | |
wx.TaskBarIcon.__init__(self) | |
self.frame = frame | |
icon = self.MakeIcon(WXPdemo.GetImage()) | |
self.SetIcon(icon, "wxPython Demo") | |
self.imgidx = 1 | |
self.Bind(wx.EVT_TASKBAR_LEFT_DCLICK, self.OnTaskBarActivate) | |
self.Bind(wx.EVT_MENU, self.OnTaskBarActivate, id=self.TBMENU_RESTORE) | |
self.Bind(wx.EVT_MENU, self.OnTaskBarClose, id=self.TBMENU_CLOSE) | |
wx.GetApp().Bind(wx.EVT_MENU_CLOSE, self.OnClose) | |
#app.Bind(wx.EVT_MENU_CLOSE, self.OnClose) | |
def CreatePopupMenu(self): | |
print "Context menu opened." | |
self.menu = wx.Menu() | |
self.menu.SetTitle("ContextMenu :)") | |
self.menu.Append(self.TBMENU_RESTORE, "Restore wxPython Demo") | |
self.menu.Append(self.TBMENU_CLOSE, "Close wxPython Demo") | |
return self.menu | |
def OnClose(self, evt): | |
print "Context menu closed." | |
print evt.GetMenu().GetTitle() | |
def MakeIcon(self, img): | |
if "wxMSW" in wx.PlatformInfo: | |
img = img.Scale(16, 16) | |
elif "wxGTK" in wx.PlatformInfo: | |
img = img.Scale(22, 22) | |
icon = wx.IconFromBitmap(img.ConvertToBitmap() ) | |
return icon | |
def OnTaskBarActivate(self, evt): | |
if self.frame.IsIconized(): | |
self.frame.Iconize(False) | |
if not self.frame.IsShown(): | |
self.frame.Show(True) | |
self.frame.Raise() | |
def OnTaskBarClose(self, evt): | |
wx.CallAfter(self.frame.Close) | |
class MainFrame(wx.Frame): | |
def __init__(self, parent): | |
wx.Frame.__init__(self, parent, title="Hello World") | |
self.tbicon = DemoTaskBarIcon(self) | |
self.Bind(wx.EVT_CLOSE, self.OnCloseWindow) | |
def OnCloseWindow(self, evt): | |
self.tbicon.Destroy() | |
evt.Skip() | |
app = wx.App(redirect=False) | |
frame = MainFrame(None) | |
frame.Show(True) | |
app.MainLoop() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment