Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 7, 2012 15:06:27

Rinaldus.ru
Зарегистрирован: 2012-09-07
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Обновление иконки в системном трее

Здравствуйте!

Полдня пытаюсь написать казалось бы простейшую программу, которая выводит в системном трее нужную иконку, а через 15 минут ее обновляет. В PyQt не разбираюсь абсолютно, все эти полдня перерыл множество примеров в гугле. За это время в мучениях родился вот этот код:

#!/usr/bin/python
import sys
from PyQt4 import QtCore
from PyQt4 import QtGui
def main():
	app = QtGui.QApplication(sys.argv)
	trayIcon = QtGui.QSystemTrayIcon(QtGui.QIcon("../Icons/1.jpg"), app)
	def icno():
		trayIcon = QtGui.QSystemTrayIcon(QtGui.QIcon("../Icons/2.jpg"), app)
		trayIcon.show()
	timer = QtCore.QTimer()
	timer.connect(timer,QtCore.SIGNAL("timeout()"),icno)
	timer.start(5000)
	
	trayIcon.show()
	sys.exit(app.exec_())
if __name__ == '__main__':
	main()
Иконка в системном трее появляется, но она не исчезает при обновлении, вместо ее начинают множиться иконки “2.jpg”. Гугл уже выдохся, ничего по этому поводу не выдает.
И еще вот какая вещь. В идеале значок для этой иконки должен браться с удаленного сайта и через 15 минут с того же сайта обновляться. Но поскольку я полдня бьюсь над простейшей заменой локальной (!) иконки, то решил пока сделать попроще, а закачку иконки с удаленного сайта и ее последующее обновление сделаю через Cron. Но все равно даже в этом случае в программе он должен обновлять иконку, а он не обновляет ее!

Офлайн

#2 Сен. 7, 2012 15:51:39

EBFE
Зарегистрирован: 2012-07-03
Сообщения: 99
Репутация: +  20  -
Профиль   Отправить e-mail  

Обновление иконки в системном трее

Но все равно даже в этом случае в программе он должен обновлять иконку, а он не обновляет ее!
Ну так вы и не обнавляеете иконку, а создаете новую
Обновить:
trayIcon.setIcon(someicon)

import sys
import random
from PyQt4 import QtCore, QtGui
from urllib2 import urlopen
from hashlib import md5
REMOTE_URL = "http://www.gravatar.com/avatar/%s?default=retro&size=32"
random.seed(42)
def main():
        app = QtGui.QApplication(sys.argv)
        trayIcon = QtGui.QSystemTrayIcon(app)
        trayIcon.show()
        def icno():
            try:
                new_icon_data = urlopen(REMOTE_URL % md5(str(random.random())).hexdigest()).read()
                new_icon = QtGui.QPixmap()
                new_icon.loadFromData(new_icon_data, format='png')
                trayIcon.setIcon(QtGui.QIcon(new_icon))
            except Exception, ex:
                 print ex
        timer = QtCore.QTimer()
        timer.connect(timer,QtCore.SIGNAL("timeout()"),icno)
        timer.start(5000)
        sys.exit(app.exec_())
if __name__ == '__main__':
	main()

Отредактировано EBFE (Сен. 7, 2012 15:54:58)

Офлайн

#3 Сен. 7, 2012 16:33:23

Rinaldus.ru
Зарегистрирован: 2012-09-07
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Обновление иконки в системном трее

Спасибо большое! Вы не могли бы мне подсказать какую-нибудь книжку на русском языке, посвященную PyQt? Не посвященную чисто Python, не посвященную чисто Qt (там может рассказываться в применении к C++, у меня есть такая, там лес еще более дремучий), а именно посвященную Qt в применении к Python. А то я чувствую, я далеко не уеду, не зная структуры.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version