Как сделать панель меню (системный трей) приложение для 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()

pic


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