2013-04-07 90 views
4

看起来是什么样的脚本 what_it_looks_like如何包括使用Pyinstaller 2.0,PySide 1.1.2绑定和Qt 4.8

当应用程序图标应该是什么工作应用程式,例如

enter image description here

发布之前,我看了下面的问题,并试图用它作为指导,使我的脚本正常工作,但它是边缘使用

PyInstaller won't load the PyQt's images to the GUI

它做的最好的是包括我在生成的目录图标如下

(图标包括像这里)

和下面的一个 我不知道它是什么,甚至说,但我觉得它能解决我的问题,如果我知道 它实际上是在做什么, Bundling data files with PyInstaller (--onefile)

我RTFM而且大部分转到我头上不幸。以下部分 我认为属于我的问题

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

我不知道如何真正implemet它在我的规范文件

同样适用于以下 http://www.pyinstaller.org/export/v2.0/project/doc/Manual.html?format=raw#accessing-data-files

Access Data Files

我已经完成了它的下列变化,包括使用-F参数

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

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

(注:我转换的文件,把exe文件的副本,最初在PySide文件夹 到我的C后:\ Python27 \ Scripts文件夹这是在我的道路,这样我可以从任何地方调用它)

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

使用Pyinstaller使可执行在我的控制台我已经使用下面的命令 使我的规格文件

C:\ Pyinstaller-2.0>蟒utils的\ Makespec.py --windowed --name =“16TangoTest “C:\ Exmake \ 16MainWindowVideo。PY

一旦规范文件由我砍它从pyinstaller文件夹并将其添加 我Exmake文件夹

然后我修改它包括使用

树(我的图标文件夹C:\ Exmake \图标), 并添加它来收集 以上a.binaries

手册和上面的第一个答案表明,我要修改我的规格文件,以便pyinstaller看到线/发现我的图标,我已经做了在图片下方 modified_spec

所有它所做的就是包括我在dist目录 图标与应用程序仍然没有显示他们在第一上图中

然后,我通过运行在控制台 ℃下面让可执行文件:\ Pyinstaller-2.0>蟒蛇pyinstaller.py C:\ Exmake \ 16TangoTest.spec 这使得,图标都包含您在第一个图片中看到的文件夹,但 文件夹而不是在它运行的应用程序

+0

什么格式是你的图标? – Blender 2013-04-07 20:11:14

+0

它们在.ico中,你几乎可以从第一张图片中知道 – 2013-04-07 20:16:28

+0

尝试将它们转换成PNG文件。我对SVG图标有类似的问题。 – Blender 2013-04-07 20:17:06

回答

2

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

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

下面的文本可能帮助他人在不同情况下

这是部分答案我自己的问题,我想感谢以上搅拌机起来,简单的答案是你有你的图标,从.ICO转换成.png文件,问题是你必须重新做你的应用程序的整个过程,这些是我采取的步骤 我第一次进入文件夹我有我的图标和转换他们froom .ico进入.png图标,我用这个工具我得到了这里http://www.towofu.net/soft/e-aicon.php我在这个站点找到了这个..我爱你stackoverflow..ahem

一旦你的图标转换为.png格式你必须改变你的.qrc文件,你有你的图标信息,并更新了新的图标信息,我建议从头开始做;一旦你有了新的icons.qrc文件,你就可以在QtDesinger中打开你的.ui文件,并从中删除旧图标的所有实例,然后使用图标/资源文件继续使用新格式化的图标进行更新。

所有图标更新完毕后,保存并继续转换工作流程,即使用pyside-uic.exe转换器将'your_file.ui'转换为'newly_converted_file.py'。

下一页转换你的“icons.qrc”文件变成了“icons_rc.py”使用pyside-rcc.exe命令

在这个过程结束时,你应该只需要你的图标与巴纽图标文件夹 您的icons_rc.py文件和您的应用程序脚本。

之后,您可以继续按照手册使用Pyinstaller-2.0 ..

正如我所说这是一个部分的答案,因为它的工作原理,但是如果别人可以告诉我或向我解释如何使它与我的原始的.ico文件一起工作,那么我怀疑我不会去槽再次

整个过程在更多的研究这个页面有特别有用 http://qt-project.org/forums/viewthread/17342

所以我走进我的Qt4.8文件夹,并没有为qico4.dll搜索和文件夹中所做的一个副本我的地方脚本被找到并且应用程序运行得很完美,如果我能找到一种方法将它包含在我的脚本中,那么我想我会得到一个完整的答案,问题似乎是Qt而不是P yinstaller,它似乎需要知道该DLL才能处理.ico文件

+0

“这个问题似乎与Qt而不是Pyinstaller”,我不相信,在这篇文章中,PyInstaller对PySide的支持是不完整的,(但对于PyQt来说是完整的)。已知PyInstaller不包含像imageformats/libqjpeg.so(Linux名称)这样的Qt插件,因为它们被称为“隐藏导入”,对此,没有人写过“挂钩”。我认为qico4.dll是在同一类别中(不是在Linux的imageformat/libqico.so中)? – bootchk 2013-09-07 16:16:02

+0

使用PNG文件的诀窍代替了我的工作。加载'qico4.dll'的技巧没有。 – shackra 2014-09-13 01:46:57

2

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

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

举个例子:

QPushButton(QIcon("./icons/clear.png"),' &Clear',self.app_wgt)