2013-04-07 164 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)