3

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

它为窗口和 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()。同样的结果没有变化。

4

2 回答 2

3

尽管答案已被接受,但这里有一个更好的网络 PyQt4 插件加载解决方案。

在查看了官方的 addLibraryPath 页面后,我发现你必须使用QtCore.QCoreApplication.addLibraryPath(). 因此,不要使用 QtGui 版本,而是使用如下:

QtCore.QCoreApplication.addLibraryPath( '//server/location/PyQt4/plugins' )
app = QtGui.QApplication(sys.argv)

如果您在创建 QApplication 之前执行此操作,您将被设置。我什至根本不需要使用 qt.conf 从我的网络驱动器正确加载插件。

于 2014-05-07T18:34:02.200 回答
0

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

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

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

在 qt.conf 中编辑以下行

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

一切正常,甚至会加载 sqldrivers。无需使用 app.addLibraryPath 您还可以在设置中包含此文件,以便自动安装。

于 2013-01-28T10:59:25.363 回答