我正在尝试为pyqt4应用程序创建一个动画系统图标,但在python中找不到任何示例。这是我能找到的最接近的但是它在C ++中并且我不知道如何翻译它:Is there a way to have (animated)GIF image as system tray icon with pyqt?
如何使用动画GIF或使用一系列静止图像作为帧来实现此目的?
答案 0 :(得分:3)
也许是这样的。创建QMovie
要使用的AnimatedSystemTrayIcon
实例。连接到电影的frameChanged
信号,然后拨打setIcon
上的QSystemTrayIcon
。您需要将QMovie.currentPixmap
返回的像素图转换为QIcon
以传递给setIcon
。
免责声明,仅在Linux上测试过。
import sys
from PyQt4 import QtGui
class AnimatedSystemTrayIcon(QtGui.QSystemTrayIcon):
def UpdateIcon(self):
icon = QtGui.QIcon()
icon.addPixmap(self.iconMovie.currentPixmap())
self.setIcon(icon)
def __init__(self, movie, parent=None):
super(AnimatedSystemTrayIcon, self).__init__(parent)
menu = QtGui.QMenu(parent)
exitAction = menu.addAction("Exit")
self.setContextMenu(menu)
self.iconMovie = movie
self.iconMovie.start()
self.iconMovie.frameChanged.connect(self.UpdateIcon)
def main():
app = QtGui.QApplication(sys.argv)
w = QtGui.QWidget()
trayIcon = AnimatedSystemTrayIcon(movie=QtGui.QMovie("cat.gif"), parent=w)
w.resize(250, 150)
w.move(300, 300)
w.setWindowTitle('Anim Systray')
w.show()
trayIcon.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()