2011-08-15 8 views
15

다음은 AppIndicator의 최소 예입니다.파이썬 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 메뉴가 사용자에 의해 opend되었는지 (예 : 표시기 아이콘이 클릭되었는지) 확인하는 방법입니다. 거기에는 메뉴가 열릴 때 방출되는 신호가 있습니까?

+0

설명서가 완전하고 의도적으로 기능이 극도로 제한되어있을 수 있습니다. 아직 시도하지 않았다면, Freenode에 가서 Unity 사람들에게 직접 물어보십시오. – dumbmatter

+1

불완전하지는 않지만 * 고의적 인 *. AppIndicator의 * 주요 * 동기는 ** 외모와 ** 사용 **의 ** 일관성 ** 및 ** 통일성 **입니다. 사람들이 아이콘을 클릭하거나 임의로 마우스 오른쪽 버튼을 클릭하여 임의의 동작을 만들기 시작하면 곧 각 응용 프로그램이 자체 방식으로 그렇게 할 것이며 표시기는 Systray와 마찬가지로 엉망이됩니다. – MestreLion

답변

7

답변이 불행한 것 같습니다.

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') 

나는 모든 것을 시도했지만 표시기를 클릭 할 때 아무 것도 활성화되지 않은 것으로 보입니다. 화합에 대한 가치가있는 것은 모든 지표를 일관된 방식으로 유지하려는 것인데 의도적으로 제한 될 가능성이 있습니다.

+0

그게 설명서가 말하는 것입니다 http://developer.ubuntu.com/api/ubuntu-11.04/libappindicator/libappindicator-app-indicator.html#AppIndicator – skrat

+0

물론 이것은 고의적이었습니다. 앱이 마우스 오른쪽 버튼 클릭, 더블 클릭, 마우스 오버 등등을위한 맞춤 동작을 생성하도록 허용하면 일관성과 일관성이 사라집니다. 이는 Windows에서 전염병이며 AppIndicator에서 허용되지 않기 때문에 기쁩니다. – MestreLion