Как будет реализовано приложение в системном трее на других платформах? - PullRequest
11 голосов
/ 07 января 2009

В Windows есть «системный трей», в котором находятся часы и всегда работающие службы, такие как MSN, Steam и т. Д.

Я бы хотел разработать приложение для лотка wxPython, но мне интересно, насколько хорошо оно будет портировать на другие платформы. Каков эквивалент лотка на каждой платформе и сколько ручного труда потребуется для поддержки Windows, OSX и Linux (какие оболочки, в частности, будут наиболее дружественными).

Ответы [ 5 ]

6 голосов
/ 07 января 2009

wx - это кроссплатформенная библиотека графического интерфейса и инструментов, которая поддерживает Win32, Mac OS X, GTK +, X11, Motif, WinCE и другие. И если вы используете его классы, то ваше приложение должно работать на всех этих платформах. Для системного трея посмотрите wxTaskBarIcon (http://docs.wxwidgets.org/stable/wx_wxtaskbaricon.html#wxtaskbaricon).

3 голосов
/ 07 января 2009

В OS X у вас есть строка меню состояния - самые правые элементы часто связаны с состоянием (например, состояние батареи, соединения WiFi и т. Д.).

Попробуйте найти NSStatusBar и NSMenuExtra . Превратить приложение в приложение, которое имеет меню NSStatusBar и не отображается в Dock, почти тривиально. Есть учебных пособий вокруг о том, как это сделать.

2 голосов
/ 07 января 2009

Для многих настольных систем Linux (Gnome, KDE и т. Д.) Реализован протокол Freedesktop SysTray . Вы можете попробовать это, если любое другое решение терпит неудачу.

1 голос
/ 07 января 2009

Использование Qt: Пример Qt Systray

Это покажет значок systray на всех платформах, на которых работает Qt и которые поддерживают такие иконки. Вам нужно будет разработать стратегию, когда функциональность systray не поддерживается.

1 голос
/ 07 января 2009

В Linux это действительно зависит - у вас есть разные среды программирования, а у некоторых оконных менеджеров даже нет области трея. Кроме того, если вы используете Gtk (а wx - это действительно Gtk), gtk.StatusIcon - ваш друг.

Здесь - некоторые примеры этого (не проверял, действительно ли они работают, но должен показать вам путь).

Для wx Я нашел пример кода здесь .

...