Взаимодействуете с gtk.container во время выполнения gtk.main ()? - PullRequest
4 голосов
/ 20 мая 2011

Поэкспериментируйте со значком монитора батареи в Python на данный момент, используя pygtk и egg.trayicon, чтобы создать значок для отображения значка батареи / всплывающей подсказки.

Кажется, я могу добавить значок и текст всплывающей подсказки, но когда он достигает стадии gtk.main(), мне нужен способ изменить их, чтобы он мог отображать обновленные значения.

Я пробовал gobject.idle_add() и gobject.timeout_add() без особой удачи, не уверен, куда идти.

У кого-нибудь есть идеи?

РЕДАКТИРОВАТЬ : Возможно, не самый ясный из вопросов.

Мне нужно циклически извлекать информацию из acpi во время работы и применять ее к виджетам внутри контейнера gtk.

РЕДАКТИРОВАТЬ 2 : Хорошо, теперь все правильно. Проблема заключалась в том, что я ничего не возвращал в своем обратном вызове. Я просто дал ему «return 123», и теперь он счастливо пыхтит в моем системном трее, уведомляя меня о проценте заряда батареи:)

1 Ответ

3 голосов
/ 20 мая 2011

Этот пример работает для меня:

# -*- 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()

Не видя ваш код, трудно сказать, что не работает.

...