#python #gtk #pygtk
#python #gtk #pygtk
Вопрос:
В данный момент экспериментирую со значком монитора заряда батареи в Python, используя pygtk и egg.trayicon
создавая значок для отображения значка батареи / всплывающей подсказки.
Кажется, я могу добавить значок и текст всплывающей подсказки, но когда это достигнет gtk.main()
стадии, мне нужен способ изменить их, чтобы затем он мог отображать обновленные значения.
Я пробовал gobject.idle_add()
и gobject.timeout_add()
без особой удачи, не уверен, куда идти от этого.
У кого-нибудь есть какие-нибудь идеи?
РЕДАКТИРОВАТЬ: Возможно, не самый ясный из вопросов.
Мне нужно выполнить цикл, извлекая информацию из acpi во время выполнения и применяя ее к виджетам внутри контейнера gtk.
ПРАВКА 2: Хорошо, теперь все правильно отключено. Проблема заключалась в том, что я ничего не возвращал внутри моего обратного вызова. Я только что выдал ему «return 123», и теперь он радостно пыхтит в моем системном трее, уведомляя меня о проценте заряда батареи 🙂
Ответ №1:
Этот пример работает для меня:
# -*- 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()
Не видя вашего кода, трудно сказать, что не работает.
Комментарии:
1. Я пытаюсь сделать это прямо сейчас, но, как и раньше, функция timeout () выполняется только один раз. Мне нужно выполнять цикл, извлекать и применять информацию по мере ее выполнения
2. тайм-ауты и простои удаляются, если они возвращают false .
3. В какой ситуации они возвращают false?