2013-07-25 37 views
1

所以我有一個Python腳本,每隔x分鐘將文件同步到我的NAS。我正在嘗試編寫一個應用程序指示器(ubuntu),以遵循上述腳本的過程。Gtk3 appIndicator - 更新不帶用戶輸入的圖標/文字

如果我嵌入指標代碼到腳本,並使用GLib.timeout_add(10,handler_timeout)則指示不能更新,直到同步完成 - 即見下面的佈局:

*

setupIndicator() 
sync(): 
    update app indicastor to say currently syncing 
    sync to nas - takes say 5mins 
    update app indicator - sync comlplete 
GLib.timeout_add(30minutes, self.sync) 
Gtk.main() 

*

這就是我想要做的,但當然不會這樣工作。我的麻煩是我不知道該從哪裏出發 - 我怎麼能做到這一點?

+0

我有類似的問題,你能解決你的問題嗎? – sparrow

回答

0

我認爲你需要將NAS功能放到一個線程中,並且每次更新時都會啓動該線程。

線程所做的第一件/最後一件事是更新指示器,以表示忙/閒。

我已經爲Ubuntu寫了一個appindicator(Python 3,GTK + 3),叫做indicator-ppa-download-statistics,發現here,它實現了一個類似於你想要的(我知道)的概念。我不確定是否需要使用鎖定機制或我在實例中使用的全局標誌,但至少有一種線程方法可以讓NAS在背景中發生而不會阻塞指示器被用戶使用。