问题
After having spent quite some time looking at ways to an app for the menu bar we're close to admit defeat.
We are basically just looking for an example/pointer on how to create an app that will put itself in the menu bar (the small icons next to the clock), and have a menu. Nothing fancy at all.
It feels like something that should be very easy to do, but we haven't been able to find an example that works.
Maybe it's not possible with Python? Does anyone know how others do it?
回答1:
An option would be to use rumps which provides a level of abstraction on top of PyObjC. I wrote it specifically for quickly generating these types of simple status bar apps.
I hope that this could help a few people out there looking for a simple, semantic solution!
A short example snippet follows. Decorators are used for registering functions as callbacks for click events and timers. There is also support for 10.8 notifications.
import rumps
class AwesomeStatusBarApp(rumps.App):
def __init__(self):
super(AwesomeStatusBarApp, self).__init__("Awesome App")
self.menu = ["Preferences", "Silly button", "Say hi"]
@rumps.clicked("Preferences")
def prefs(self, _):
rumps.alert("jk! no preferences available!")
@rumps.clicked("Silly button")
def onoff(self, sender):
sender.state = not sender.state
@rumps.clicked("Say hi")
def sayhi(self, _):
rumps.notification("Awesome title", "amazing subtitle", "hi!!1")
if __name__ == "__main__":
AwesomeStatusBarApp().run()
回答2:
wxPython won't be able to add a taskbar item. You can do this by instead using PyObjC like so:
from AppKit import NSStatusBar
status_item = NSStatusBar.systemStatusBar().statusItemWithLength_(-1) #NSVariableStatusItemLength
status_item.setImage_(<NSImage instance to status icon>)
Just refer to the NSStatusItem class reference to do stuff to the item, e.g. add a menu, change the highlight image, etc.
回答3:
Actually, you can use wxPython. Refer to my related answer here: how to set a menubar icon on mac osx using wx
来源:https://stackoverflow.com/questions/8544853/how-to-make-an-menu-bar-system-tray-app-for-osx-in-python