9

MainWindowQMainWindowインスタンス)のアイコンを持つPySideアプリがあります。ファイルを正常に実行するとアイコンが表示され、すべて問題ありませんが、でexeを作成するとpy2exeアイコンが表示されません。これはcx_freezeまた(だから問題はないと思いますpy2exe)。

アプリは を使用して設計され、 を使用QtDesignerして python に変換されましたpyside-uic。アイコンをファイルとリソース (qrc ファイル) の両方で使用しようとしましたが、どちらも機能しないようです。

ヘルプやポインタをいただければ幸いです。

ありがとう。

4

5 に答える 5

4

kochelmonster のソリューションは、Qt dll を library.zip または exe にバンドルしようとしない限り機能します。また、アプリ ディレクトリのベースにプラグインを配置する場合、ライブラリ パスを設定する必要はありません。

私はまだ他のすべてをバンドルしたかったので、qt dll を除外して手動で追加しました。私の setup.py は次のようになります。

from os.path import join

_PYSIDEDIR = r'C:\Python27\Lib\site-packages\PySide'
data_files =[('imageformats',[join(_PYSIDEDIR,'plugins\imageformats\qico4.dll')]),
              ('.',[join(_PYSIDEDIR,'shiboken-python2.7.dll'),
                join(_PYSIDEDIR,'QtCore4.dll'),
                join(_PYSIDEDIR,'QtGui4.dll')])
              ]
setup(
    data_files=data_files,
    options={
        "py2exe":{
            "dll_excludes":['shiboken-python2.7.dll','QtCore4.dll','QtGui4.dll'],
            "bundle_files": 2
            ...
        }
    }
    ...
)

プロジェクトで追加の Qt dll を使用している場合は、それらも除外して手動で追加する必要があります。.ico イメージ以外のものをロードする必要がある場合は、正しいプラグインも追加する必要があります。

于 2011-04-13T01:40:14.020 に答える
2

bmp では動作すると思いますが、png/jpg では動作しませんか? その場合、画像形式のプラグインが正しく読み込まれていない可能性があります。

インストールされたアプリケーションのディレクトリにqt.confファイルを設定し、plugin-dll が /plugins/imageformats/ に移動していることを確認すると、動作が改善されると思います。

于 2011-01-07T17:55:15.707 に答える
2

私も同じ問題を抱えていました。いくつかの調査の後、私は解決策を見つけました:(マッケは正しい考えを持っていました)

cx_freezeイメージリーダーPyQtを含む plugins ディレクトリをコピーしません。ico手順は次のとおりです。

  1. plugins ディレクトリをディストリビューションにsetup.pyコピーしますPyQt4
  2. コードに次のように記述します。
application_path = os.path.split(os.path.abspath(sys.argv[0]))[0]
try:
   if sys.frozen:
        plugin_path = os.path.join(application_path, "qtplugins")
        app.addLibraryPath(plugin_path)
except AttributeError:
    pass
于 2011-03-11T23:22:25.700 に答える
1

Windows 7 のタスクバー アイコンの処理に関連している可能性はありますか?

その答えについては、Windows 7 でアプリケーションのタスクバー アイコンを設定する方法を参照してください。

于 2011-01-18T11:28:37.153 に答える
0

リリース フォルダに「qico4.dll」を手動で含める必要があります。これを setup.py に挿入します。

import sys
from os.path import join, dirname
from cx_Freeze import setup, Executable

_ICO_DLL = join(dirname(sys.executable), 
                     'Lib', 'site-packages',
                     'PySide', 'plugins',
                     'imageformats', 'qico4.dll')

build_exe = {
        'include_files': [(
                _ICO_DLL,
                join('imageformats', 'qico4.dll'))]}

setup(name = "xxxxx",
      version = "1.0.0",
      ...
      options = { ...
                 'build_exe': build_exe
                  ...},
      ...)
于 2013-08-02T23:32:37.240 に答える