4

cx_freeze を使用してフリーズした PyQt4 プログラムがあります。私が抱えている問題は、SVGファイルから作成されたピックスマップを取得しているQGraphicsPixmapItemを作成するときです。アイテムは問題なく作成されますが、ピックスマップは読み込まれないため、シーン内のアイテムだけの画像はありません. 私を混乱させているのは、これは、exe をビルドしたコンピューターとは別のコンピューターで実行している場合にのみ発生することです。ビルドしたコンピューターでexeを実行すると、プログラムは完全に機能します。必要なすべての python コンポーネントと pyqt コンポーネントがコンピューターにインストールされているコンピューターで実行しようとしても、それを構築したコンピューターでない場合、pixmap は svg ファイルから読み込まれません。これが私の cx_freeze セットアップの問題かどうかはわかりません。py ファイルまたはメイン コードで何かを変更する必要がある場合は、ヘルプまたは正しい方向に私を向けるだけで十分です。私の感じでは、cx_freeze がビルドするときに何かがおかしくなっているので、setup.py ファイルの内容を以下に貼り付けます。また、Python v3.1 を使用して Windows で実行しています。

from cx_Freeze import setup, Executable

files = ['drawings\\FULL', 'drawings\\PANEL', 'data.csv', 'panelData.csv']
binIncludes = ['C:\\Python31\\Lib\\site-packages\\PyQt4\\bin\\QtSvg4.dll']
includes = ['main', 'PunchDialog', 'ArrayDialog', 'PricingDialog', 'FontAndInputDialog', 'PanelSelector', 'PyQt4', 'os', 'sys', 'ctypes', 'csv']
packages = ['drawings']
path = ['C:\\Users\\Brock\\Documents\\Programming\\PanelDesigner\\DrawingFirst', 'C:\\Python31\\Lib', 'C:\\Python31\\Lib\\site-packages', 'C:\\Python31\\DLLs']

setup(
        name = 'PanelBuilder',
        version = '1.0',
        description = 'Allows user to draw custom panel layouts.',
        author = 'Brock Seabaugh',
        options = {'build_exe': {'packages':packages, 'path':path, 'include_files':files, 'bin_includes':binIncludes, 'includes':includes}},
        executables = [Executable('PanelBuilder.py')])

PS。これが私のファイル階層です(それがまったく役立つ場合):

\DrawingFirst
    Main .py file
    All .py files for all custom dialogs used
    \drawings
        some modules used
        \FULL
            A bunch of SVG files used
        \PANEL
            More SVG files used
4

3 に答える 3

3

元のコードに含まcx_freezeれるimageformatsたびにフックを追加しました。PyQt4.QtGui適切な場所に配置するとimageformats、外部に保存されたアイコンも機能します。

https://bitbucket.org/anthony_tuininga/cx_freeze/pull-request/11/added-pyqt4qtgui-load-hook-that-adds/diff

于 2012-12-13T14:37:37.263 に答える
0

Googleからここに来る人の場合:QtWebKitのみを使用する場合は、imageformatsディレクトリ(PYTHONDIR \ lib \ site-packages \ PyQt4 \ pluginsにあります)をアプリディレクトリにコピーする必要がありますインクルードの中でPyQt4.QtWebKitを指定するだけでは不十分です。

于 2012-02-23T19:51:28.420 に答える