Как сделать панель меню (системный трей) приложение для OSX в Python?
Потратив довольно много времени на поиск способов приложения для строки меню, мы близки к признанию поражения.
мы в основном просто ищем пример / указатель на то, как создать приложение, которое поместит себя в строке меню (маленькие значки рядом с часами) и имеет меню. Ничего особенного.
Он чувствует, как то, что должно быть очень легко сделать, но мы не смогли найти пример, который работает.
возможно, это невозможно с помощью Python? Кто-нибудь знает, как это делают другие?
3 ответов
опция будет использовать rumps
, который обеспечивает уровень абстракции поверх PyObjC. Я написал его специально для быстрого создания этих типов простых приложений в строке состояния.
Я надеюсь, что это может помочь нескольким людям, которые ищут простое семантическое решение!
ниже приведен краткий пример фрагмента. Декораторы используются для регистрации функций в качестве обратных вызовов для событий щелчка и таймеров. Существует также поддержка 10.8 уведомления.
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()
wxPython не сможет добавить элемент панели задач. Вы можете сделать это, используя PyObjC следующим образом:
from AppKit import NSStatusBar
status_item = NSStatusBar.systemStatusBar().statusItemWithLength_(-1) #NSVariableStatusItemLength
status_item.setImage_(<NSImage instance to status icon>)
просто обратитесь к ссылке класса NSStatusItem, чтобы сделать что-то с элементом, например, добавить меню, Изменить изображение подсветки и т. д.
вообще-то, ты can использовать wxPython, в. См. мой связанный ответ здесь:как установить значок меню на mac osx с помощью wx