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 ファイルにパスを設定し、このファイルをアプリケーションの実行可能ファイルの場所に配置できます。

\somesystem\Share\PyQt4 などのネットワーク ロケーションから 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 に答える