一尘不染

如何从网络加载PyQt4中的.ico文件

python

我有一个在PyQt4中开发的应用程序。

它具有为Windows和QMenus设置的图标。

所有客户端系统均已安装python。并且PyQt4是从网络位置加载的(\\system_xyz\PyQt4)

该应用程序在带有正确加载图标的开发人员系统中运行良好。但是,当在客户端上运行相同的脚本时,应用程序可以运行,但图标不会加载。

在我的应用程序中,我也使用了Qsql驱动程序。它也有同样的问题。适用于开发人员系统,但不适用于客户端系统。

我可以通过将sql插件路径添加到以下应用程序来克服此sql驱动程序问题

SQLDriverPath = (r'\\system_xyz\PyQt4\plugins\sqldrivers')
QtGui.QApplication.addLibraryPath(SQLDriverPath)

我了解到pyqt4需要qico4.dll读取.ico文件。所以我将imageformats路径添加到了应用程序。但它没有用。

ImageDriverPath = (r'\\system_xyz\PyQt4\plugins\imageformats')
QtGui.QApplication.addLibraryPath(ImageDriverPath)

任何人都可以建议我一种正确的方法来解决我的问题,如何通过网络在PyQt应用中加载.ico

我的更新

我做了以下列出支持的图像格式。

import sys

sys.path.append(r'r'\\system_xyz')

from PyQt4 import QtGui

for imageType in QtGui.QImageReader.supportedImageFormats():
    print imageType

输出值

bmp
pbm
pgm
png
ppm
xbm
xpm

添加后我尝试列出上面的内容imageformats,创建后OP也一样QtGui,QApplication()。结果不变。


阅读 174

收藏
2021-01-20

共1个答案

一尘不染

您可以在qt.conf文件中设置路径,并将此文件放置在应用程序可执行文件的位置。

从网络位置访问PyQt4,说\ somesystem \ Share \ PyQt4

您可以在\\ somesystem \ Share \ PyQt4中找到一个qt.conf文件,然后将其复制并粘贴到应用程序可执行文件的位置。

在qt.conf中编辑以下几行

[Paths]
Prefix = //somesystem/Share/PyQt4
Binaries = //somesystem/Share/PyQt4

一切正常,即使sqldrivers也将被加载。无需使用app.addLibraryPath您也可以在安装程序中包含此文件,以便将其自动安装。

2021-01-20