Привязки Python AppIndicator -> как проверить, открыто ли меню? - PullRequest
16 голосов
/ 15 августа 2011

Вот минимальный пример AppIndicator:

#!/usr/bin/python

import gobject
import gtk
import appindicator

if __name__ == "__main__":
    ind = appindicator.Indicator("example-simple-client", "gtk-execute", appindicator.CATEGORY_APPLICATION_STATUS)
    ind.set_status (appindicator.STATUS_ACTIVE)
    menu = gtk.Menu()
    menu_items = gtk.MenuItem('Quit')
    menu.append(menu_items)
    menu_items.connect("activate", gtk.main_quit)
    menu_items.show()
    ind.set_menu(menu)
    gtk.main()

К сожалению, документация по этому вопросу очень неполная. То, что я ищу, - это способ проверить, открывалось ли пользователем меню AppIndicator (например, был щелкнут значок индикатора). Так есть ли сигнал, который выдается при открытии меню?

Ответы [ 2 ]

8 голосов
/ 21 августа 2011

Похоже, ответа нет, к сожалению.

print gobject.signal_list_names(ind)
('new-icon', 'new-attention-icon', 'new-status', 'new-label', 'x-ayatana-new-label', 'connection-changed', 'new-icon-theme-path')

Я попробовал все из них, и ни один из них не активируется при нажатии на индикатор. Для чего стоит разработчики Unity, похоже, хотят, чтобы все индикаторы вели себя одинаково, поэтому вполне возможно, что он намеренно ограничен.

2 голосов
/ 27 октября 2011

На Launchpad зарегистрировано сообщение об ошибке https://bugs.launchpad.net/screenlets/+bug/522152

Обратите внимание, что сигнал «активировать» доступен для подменю AppIndicator.

...