部署 PyQt 5 開發環境

本文假設讀者已經具備 Python 相關的基礎知識,并不會介紹如何安裝 Python,以及 pip 的使用方法。另外,我也是初學者,希望大家幫我指出錯誤,以求共同進步。

轉載請注明出處:http://www.lxweimin.com/u/5e6f798c903a
最后編輯時間:2017.12.06

1. 基本環境

關于 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.pypyuic5.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 進行配置,使其更加適合作為 PyQt 的開發工具。
在 PyCharm 中依次選擇:File -> Settings -> Tools -> External Tools
然后使用下圖中的 “+” 號,逐個添加下列三個外部工具。

  1. Qt_Designer
  2. PyUIC
  3. Pyrcc
0x02 配置 PyCharm-00.png

配置 Qt_Designer

此工具用于調用 designer.exe ,請依照下圖進行設置。
注意:類似 $ProjectFileDir$ 的宏變量可點擊 Insert macro... 進行插入,同時也會看到相應宏變量的解釋。

0x02 配置 PyCharm-01.png

配置 PyUIC

前面,我們已近介紹了 pyuic 模塊,下面只需要按照命令語法進行配置即可。
下圖的配置方式會生成額外的代碼,方便對模塊進行測試。
這種方式與通過 Eric6 編譯形成的 .py 文件相同。
Parameters:-o Ui_$FileNameWithoutExtension$.py -x $FilePath$

0x02 配置 PyCharm-02.png

配置 Pyrcc

前面,我們已近介紹了 pyrcc 模塊,這里只需要按照下圖配置即可。

0x02 配置 PyCharm-03.png

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 時,會提示需要配置,點擊 “確定” 后,便會進入配置界面。

配置 自動完成:

請依照下圖進行設置。

0x03 Eric6-00.png
0x03 Eric6-01.png

配置 API

請依照下圖進行設置。
點擊 “從已安裝的 API 中添加” 便可選取相應的 API。按圖所示,選擇好相應的 API 后,還需點擊 “編譯 API”。


0x03 Eric6-02.png

配置 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

0x03 Eric6-03.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,333評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,491評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,263評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,946評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,708評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,186評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,255評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,409評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,939評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,774評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,976評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,518評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,209評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,641評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,872評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,650評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,958評論 2 373