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

3
我有一个用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()之后也是如此。

2个回答

3
虽然已经有了答案,但是这里提供一个更好的解决方案来加载网络PyQt4插件。
在查看官方addLibraryPath页面后,我发现你必须使用QtCore.QCoreApplication.addLibraryPath()。因此,不要使用QtGui版本,而应该像下面这样使用:
QtCore.QCoreApplication.addLibraryPath( '//server/location/PyQt4/plugins' )
app = QtGui.QApplication(sys.argv)

如果在创建 QApplication 之前正确执行此操作,您就可以完成设置。我甚至不需要使用 qt.conf 从我的网络驱动器正确加载插件。

0

您可以在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。 您还可以将此文件包含在设置中,以便自动安装。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接