2011-05-20 152 views
4

使用pygtkegg.trayicon在Python中測試電池監視器圖標以創建一個圖標以顯示電池圖標/工具提示。正在執行gtk.main()時與gtk.container交互?

我似乎可以添加圖標和工具提示文本,但是當它到達gtk.main()階段時,我需要一種方法來修改它們,以便它可以顯示更新後的值。

我試過gobject.idle_add()gobject.timeout_add()沒有太多的運氣,不知道該從哪裏走。

任何人有任何想法?

編輯:也許不是最清楚的問題。

我需要循環,在運行時從acpi獲取信息並將其應用於gtk容器內的小部件。

編輯2:好吧,它現在正常。問題在於我沒有在回調中返回任何內容。我只是把它「返回123」,現在它高興地隆隆走在我的系統托盤中,通知我,我的電池百分比:)

回答

3

這個例子對我的作品的:

# -*- Mode: Python -*- 
# vi:si:et:sw=4:sts=4:ts=4 

import gobject 
import gtk 
from egg import trayicon 

label = gtk.Label("Over here") 

def callback(widget, ev): 
    label.set_text("You found me") 

def timeout(): 
    label.set_text("What are you waiting for?") 

tray = trayicon.TrayIcon("TrayIcon") 
box = gtk.EventBox() 
box.add(label) 
tray.add(box) 
tray.show_all() 

box.connect("button-press-event", callback) 

gobject.timeout_add(3000L, timeout) 

gtk.main() 

沒有看到你的代碼,它是很難說什麼不行。

+0

我現在正在嘗試這個,但就像之前它只執行一次timeout()。 我需要循環,提取和應用信息,因爲它運行 – Scarecrow 2011-05-21 03:40:22

+0

超時和閒置如果他們返回false將被刪除。 – 2011-05-21 03:45:26

+0

他們在什麼情況下返回false? – Scarecrow 2011-05-21 04:08:46