Найти - Пользователи
Полная версия: Обновление иконки в системном трее
Начало » Python для новичков » Обновление иконки в системном трее
1
Rinaldus.ru
Здравствуйте!

Полдня пытаюсь написать казалось бы простейшую программу, которая выводит в системном трее нужную иконку, а через 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. Но все равно даже в этом случае в программе он должен обновлять иконку, а он не обновляет ее!
EBFE
Но все равно даже в этом случае в программе он должен обновлять иконку, а он не обновляет ее!
Ну так вы и не обнавляеете иконку, а создаете новую
Обновить:
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()
Rinaldus.ru
Спасибо большое! Вы не могли бы мне подсказать какую-нибудь книжку на русском языке, посвященную PyQt? Не посвященную чисто Python, не посвященную чисто Qt (там может рассказываться в применении к C++, у меня есть такая, там лес еще более дремучий), а именно посвященную Qt в применении к Python. А то я чувствую, я далеко не уеду, не зная структуры.
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