本文假設讀者已經具備 Python 相關的基礎知識,并不會介紹如何安裝 Python,以及 pip 的使用方法。另外,我也是初學者,希望大家幫我指出錯誤,以求共同進步。
轉載請注明出處:http://www.lxweimin.com/u/5e6f798c903a
最后編輯時間:2017.12.06
1. 基本環境
- Win10 64位
- Python 3.6.3
-
PyQt5: PyQt5-5.9.2-5.9.3-cp35.cp36.cp37-none-win_amd64.whl
- 安裝:
pip3 install PyQt5
-
官方安裝指導(失效)官方指導手冊
- 安裝:
-
PyQt-tools: pyqt5_tools-5.9.0.1.2-cp36-none-win_amd64.whl
- 安裝:
pip install PyQt5-tools
- 環境變量:將 PyQt-tools 的安裝目錄添加到系統環境變量中,如
C:\Python36\Lib\site-packages\pyqt5-tools
- 說明:在舊版本的 PyQt5
.whl
文件中,會包含諸如 Qt Designer 等工具。
但是在最新版本的.whl
文件中不再提供這些工具,會更加專注于實現 PyQt5 應用程序的依賴。相關的工具轉而由 PyQt5-tools 提供,比如 Qt Designer。一旦安裝了 PyQt5-tools 便可不再安裝 Qt 開發工具。
- 安裝:
關于 Anaconda:就目前而言,我嘗試了的 Anaconda3-5.0.0-Windows-x86_64。但是由于某些未知的原因(或說是因為我的無知),其自帶的 Qt Designer 總會在啟動時給出錯誤提示。我嘗試過重新安裝整個 Anaconda3,但問題依舊無法解決。另外,我曾在 Anaconda3-4.4 下,成功運行過其自帶的 Qt Designer。但當我更新了 Qt 相關的一些包后, Qt Designer 也給出了相同的錯誤提示。因此,建議作為初學者,盡量避免使用 Anaconda3-5.0.0。盡管上訴問題都可以通過自己努力的到解決,但是我們當前的目標是快速認識 Qt,而非不停的折騰開發環境。
2. 關于 pyuic
參考資料:Using Qt Designer
Qt Designer 使用 XML 格式的 .ui
文件儲存 GUI 界面,但并不會生成任何 C++ / Python 代碼。Qt 內含的 uic utility 用于從 .ui
文件生成用于創建 GUI 的 C++ 代碼。Qt 還包含 QUiLoader
類,該類允許應用程序加載 .ui
文件,并動態創建相應的用戶界面。
PyQt5 并沒有打包 QUiLoader
類,而是包含了 uic
Python 模塊。 uic
模塊一方面類似于 QUiLoader
類,可加載 .ui
文件,并動態創建用戶界面。另一方面,也擁有和 uic utility 相似的功能, uic
模塊也可用于從 .ui
文件生成用于創建 GUI 的 Python 代碼。
PyQt5 的 pyuic5 程序是 uic
模塊的命令行接口,我們在配置 PyCharm 時,便會用到該命令。
pyuic5 命令的語法如下:
pyuic5 [options] .ui-file
所有的命令行選項如下:
- -h, --help:將幫助信息寫入到
stdout
。 - --version:將版本號寫入到
stdout
。 - -i <N>, --indent <N> :定義由 pyuic5 生成 Python 代碼時,代碼縮進的空格數
<N>
。如果<N>
是 0 ,表示使用制表符縮進。默認值是 4。 - -o<FILE>, --output <FILE> :由 pyuic5 生成的 Python 代碼被寫入到文件
<FILE>
。 - -p, --preview :動態創建并顯示 GUI。不會生成 Python 代碼。
- -x, --execute :生成的 Python 代碼會包含一些附加代碼,以保證整段代碼可作為獨立應用被執行時,同樣可以創建并顯示 GUI。也就是說附加代碼保證了所生成的整個代碼段可以獨立運行,當我們使用 Eric6 編譯
.ui
文件時,所得到的 Python 代碼便會擁有這樣的效果。 - --import-from<PACKAGE> :在 5.6 版本中新加入的功能。使用
from <PACKAGE> import ...
導入資源模塊,而不是使用import ...
。 - --from-imports :相當于指定
--import-from .
。 - --resource-suffix<SUFFIX> :后綴
<SUFFIX>
會被追加到所有在.ui
文件中被指定的資源文件的原始名稱后。附加<SUFFIX>
的新名稱被用于由 pyrcc5 從資源文件生成的 Python 模塊的名稱。例如,如果在.ui
文件中指定了名為foo.qrc
的資源文件,那么該資源文件對應的 Python 模塊的名稱則是foo_rc
。
注意:由pyuic5 生成的代碼不能保證與較久版本的 PyQt5 兼容。但是,可以保證這些代碼與較高版本的 PyQt5 相兼容。如果無法你無法控制用戶所使用的 PyQt5 的版本,那么在安裝過程中則應該運行 pyuic5 或調用 compileUi()
。另一種辦法是分發 .ui
文件(可被作為資源文件的一部分),并在應用程序中動態加載 .ui
文件。
PyQt5.uic.pyuic.py 和 pyuic5.exe 都是同一個對象,只是調用的方法不同。
pyuic5 可被直接調用,pyuic 則需通過 python 調用。
C:\Users\iwhal>python -m PyQt5.uic.pyuic --version
Python User Interface Compiler 5.9.2 for Qt version 5.9.3
C:\Users\iwhal>pyuic5 --version
Python User Interface Compiler 5.9.2 for Qt version 5.9.3
3. 關于 pyrcc
參考資料:PyQt5資源系統
- PyQt5 資源系統:
PyQt5 支持 Qt 的資源系統。這是一種將資源(如 icon 和翻譯文件)嵌入到應用程序中的工具。利用資源系統在打包和分發資源會更加輕松。
.qrc
資源集合文件是一個 XML 格式的文件,用于指定需要被嵌入到應用程序中的資源文件。應用程序會以冒號作為開頭,通過資源文件的原始名稱引用相應的文件。
相關的完整描述(包括.qrc
文件的格式),請參考 Qt 文檔中的 Qt Resource System。
- pyrcc5:
PyQt5 的 pyrcc5 模塊相當于 Qt 的 rcc utility,并且兩者的使用方式完全相同。pyrcc5 會讀取.qrc
文件和資源文件,并生成相應的 Python 模塊。只需要在應用程序中import
相應的 Python 資源模塊,便可以像使用原始文件一樣,使用相應的資源。
4. 配置 PyCharm
- PyCharm: Version 2017.2.3
這一小節我們會對 PyCharm 進行配置,使其更加適合作為 PyQt 的開發工具。
在 PyCharm 中依次選擇:File -> Settings -> Tools -> External Tools
。
然后使用下圖中的 “+” 號,逐個添加下列三個外部工具。
- Qt_Designer
- PyUIC
- Pyrcc
配置 Qt_Designer
此工具用于調用 designer.exe
,請依照下圖進行設置。
注意:類似 $ProjectFileDir$
的宏變量可點擊 Insert macro...
進行插入,同時也會看到相應宏變量的解釋。
配置 PyUIC
前面,我們已近介紹了 pyuic 模塊,下面只需要按照命令語法進行配置即可。
下圖的配置方式會生成額外的代碼,方便對模塊進行測試。
這種方式與通過 Eric6 編譯形成的 .py
文件相同。
Parameters:-o Ui_$FileNameWithoutExtension$.py -x $FilePath$
配置 Pyrcc
前面,我們已近介紹了 pyrcc 模塊,這里只需要按照下圖配置即可。
5. Eric6
Eric 在 PyQt5 開發的過程中擁有一些比 Pycharm 更加便捷的特性,所以建議大家同時配置好這兩個 IDE。
下載鏈接: eric-download
安裝 Eric6
- 首先請務必按照 “1. 基本環境” 中的內容配置好基本環境。
- 安裝 QScintilla:
pip install qscintilla
。 - 安裝 eric6:將 eric6-17.09.zip 解壓后,找到
eric6-17.09
目錄下的install.py
,雙擊安裝。(這個版本自帶漢化,無需安裝額外的漢化包) - 啟動 eric6:點擊
eric6-17.09\eric
目錄下的eric6.pyw
便可啟動 eric6 了。
配置 Eric6
首次打開 Eric 時,會提示需要配置,點擊 “確定” 后,便會進入配置界面。
配置 自動完成:
請依照下圖進行設置。
配置 API
請依照下圖進行設置。
點擊 “從已安裝的 API 中添加” 便可選取相應的 API。按圖所示,選擇好相應的 API 后,還需點擊 “編譯 API”。
配置 Qt
一般而言,Eric 會自動調用相關 “Qt 工具”,無需對此項進行配置。
但是如果你的 Eric 無法啟動 designer.exe
,那么請在 Qt 工具 -> Tools Directory
中填入designer.exe
的絕對路徑。由于我們已經通過 PyQt-tools 安裝了 Qt Designer,designer.exe
通常會位于pyqt5-tools 包中。
我本機上的路徑為 C:\Python36\Lib\site-packages\pyqt5-tools
。