belk_o
Май 26, 2010 21:54:04
собственно проблема такая - не отображается иконка в трее, если вот этот код пустить в бесконечном цикле:
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
Июнь 25, 2010 22:24:39
ну ладно - раз никто не ответил - сам расскажу - может кому и пригодится :)
решил проблему через применение модуля gobject
функция таймера :
import gobject
и затем в теле программы
def run(self):
код….
gobject.timeout_add(1000, self.run) - повтор выполнения - раз в секунду
Может и некошерно - но работает :)
bw
Июнь 26, 2010 03:11:53
Работаете с GTK используйте его внутренний цикл (основан на gobject). Но, если мне не изменяет склероз, цикл можно организовать свой, но передовать gtk/gobject на время управление (не хочу сейчас в справочник по api лезть), хотя это не айс конечно, у gobject вполне прилиный цикл со всем что может понадобиться.
p.s. Не заметил сообщение в своё время, не виноватый я :-).
p.p.s. Задачка на базе gtk любопытная, попробую сегодня сам поколдую, результат выложу. А то умничаю тут разные, скажете :-).
p.p.p.s. С просоня туго соображаю, похоже вы и пришли к тому что бы использовать цикл gtk/gobject и повесили свой обработчик таймерных событий. На троечку так :-).
..bw