2011-08-15 62 views
15

這裏是一個AppIndicator的小例子:Python 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菜單是否由用戶開啓(例如點擊指示器圖標)的方法。那麼是否有信號,菜單打開時發出?

+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

相關問題