Найти - Пользователи
Полная версия: gtk.StatusIcon() - проблема с отображением в трее
Начало » GUI » gtk.StatusIcon() - проблема с отображением в трее
1
belk_o
собственно проблема такая - не отображается иконка в трее, если вот этот код пустить в бесконечном цикле:
command = ['ping -q -c5 213.180.204.3 | tail -n 1    | grep \'rtt\' | cut -c38-39 ']
ping_command = subprocess.Popen( command, shell=True, stderr=subprocess.PIPE)
notok=ping_command.stderr.read()
if notok == "":
tray = gtk.StatusIcon()
tray = gtk.StatusIcon()
icon="icon.xpm"
tray.set_from_file(icon)

else:
tray = gtk.StatusIcon()
icon1="icon2.xpm"
tray.set_from_file(icon1)
По-идее программа должна сидеть в трее, периодически пинговать сервер и менять цвет иконки.
Помогите люди добрые!
А я Вам спасибо скажу :)
belk_o
ну ладно - раз никто не ответил - сам расскажу - может кому и пригодится :)
решил проблему через применение модуля gobject
функция таймера :

import gobject

и затем в теле программы

def run(self):
код….
gobject.timeout_add(1000, self.run) - повтор выполнения - раз в секунду

Может и некошерно - но работает :)
bw
Работаете с GTK используйте его внутренний цикл (основан на gobject). Но, если мне не изменяет склероз, цикл можно организовать свой, но передовать gtk/gobject на время управление (не хочу сейчас в справочник по api лезть), хотя это не айс конечно, у gobject вполне прилиный цикл со всем что может понадобиться.

p.s. Не заметил сообщение в своё время, не виноватый я :-).

p.p.s. Задачка на базе gtk любопытная, попробую сегодня сам поколдую, результат выложу. А то умничаю тут разные, скажете :-).

p.p.p.s. С просоня туго соображаю, похоже вы и пришли к тому что бы использовать цикл gtk/gobject и повесили свой обработчик таймерных событий. На троечку так :-).

..bw
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB