2011-05-20 65 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