4

什么脚本看起来像 what_it_looks_like

工作应用程序应该是什么样子

在此处输入图像描述

在发布之前,我查看了以下问题并尝试将其用作使我的脚本正常工作的指南,但它的用处不大

PyInstaller 不会将 PyQt 的图像加载到 GUI

它所做的最好的是将我的图标包含在结果目录中,如下所示

(图标包括这里的图片)

下一个我什至不知道它在说什么,但如果我知道它实际上在做什么,我觉得它可以解决我的问题, 使用 PyInstaller (--onefile) 捆绑数据文件

我有 rtfm,不幸的是,其中大部分都超出了我的想象。我认为与我的问题有关的以下部分

http://www.pyinstaller.org/wiki/Recipe/CollectDatafiles

我不知道如何在我的规范文件中实际实现它

以下 http://www.pyinstaller.org/export/v2.0/project/doc/Manual.html?format=raw#accessing-data-files也是如此

访问数据文件

我已经完成了以下及其变体,包括使用 -F 参数

我使用 pyside-uic.exe 将我的 mainWindow.ui 文件转换为 mainGui.py 文件

然后使用 pyside-rcc.exe 将 icons.qrc 转换为 icons_rc.py 进行转换

(注意:我在将最初位于 PySide 文件夹中的 exe 副本放入我的路径中的 C:\Python27\Scripts 文件夹后转换了文件,以便我可以从任何地方调用它)

我将我的图标存储在图标文件夹中

为了使用 Pyinstaller 在我的控制台中制作可执行文件,我使用了以下命令来制作我的规范文件

C:\Pyinstaller-2.0> python utils\Makespec.py --windowed --name="16TangoTest" C:\Exmake\16MainWindowVideo.py

制作规范文件后,我将其从 pyinstaller 文件夹中剪切,并将其添加到我的 Exmake 文件夹中

然后我修改它以包含我的图标文件夹使用

树(C:\Exmake\icons),并将其附加到 a.binaries 上方的行中收集

上面的手册和第一个答案表明我必须修改我的规范文件,以便 pyinstaller 看到/找到我的图标,如下图所示 修改规范

它所做的只是将我的图标包含在 dist 目录中,而应用程序仍然没有像上面的第一张图片那样显示它们

然后我通过在控制台 C:\Pyinstaller-2.0>python pyinstaller.py C:\Exmake\16TangoTest.spec 中运行以下命令来制作可执行文件,这使得您在第一张图片中看到的文件夹包含在内,但文件夹,但不是运行时的应用程序

4

2 回答 2

3

我遇到了和你一样的问题。在 pyinstaller 创建我的可执行文件(pyinstaller 版本 2.1 和 PySide 1.2.1)后,所有图标似乎都丢失了。但是显示了 .png 之一。

因此,一种可能的解决方法是在 PySide 中为您的图标使用 .png 而不是 .ico,并且它可以在双方(python 和可执行文件)上工作。

举个例子:

QPushButton(QIcon("./icons/clear.png"),' &Clear',self.app_wgt)
于 2014-01-13T12:15:50.860 回答
2

好的,最后的答案,事实证明 Qt 需要以下文件 qico4.dll 可能与 Qt5 不同,在 QtDesigner 中制作 GUI 时,它会自动加载它需要的所有插件,包括上面的图像插件,但是当将文件转换为除非您在脚本中添加以下代码,否则它不包含它的 python 脚本

#:Loads the qico plug-in lets you use .ico icons
QPlugin = QPluginLoader("qico4.dll")

下面的文字可能会在不同情况下帮助其他人

This is a partial answer to my own question I would like to thank Blender up above, the short answer is you have to convert your icons from .ico into .png files, the problem is that you have to do the whole process of making your application again, these are the steps that I took I first went into the folder where I had my icons and converted them froom .ico into .png icons, I used the tool I got here http://www.towofu.net/soft/e-aicon.php I found this in this site..I love stackoverflow..ahem

once your icons are converted to the .png format you must change your .qrc file where you have your icon information and updated with the new icon information, I advise doing it from scratch; once you have your new icons.qrc file you then open your .ui file in QtDesinger and erase all the instances of your old icons from it and then proceed to update them with the newly formatted icons using the icon/resource file.

After all of your icons have been updated, you save it and continue with the conversion workflow, i.e convert your 'your_file.ui' to 'newly_converted_file.py' using the pyside-uic.exe converter.

Next convert your 'icons.qrc' file into a 'icons_rc.py' using the pyside-rcc.exe command

at the end of this process you should only need your icons folder with your .png icons your icons_rc.py file and your application script.

After that you can continue to use the Pyinstaller-2.0 as per the manual..

As I've said it is a partial answer because it works, however if someone else could tell me or explain to me how to make it work with my original .ico files then I suspect I would not have to go trough the whole process again

Upon more research this page was especially helpful http://qt-project.org/forums/viewthread/17342

所以我进入我的 Qt4.8 文件夹并搜索了 qico4.dll 并在我的脚本所在的文件夹中复制了它并且应用程序运行完美,如果我能找到一种方法将它包含在我的脚本中然后我想我会有一个完整的答案,问题似乎出在 Qt 而不是 Pyinstaller,似乎它需要知道 dll 才能处理 .ico 文件

于 2013-04-07T23:13:58.047 回答