PySide #1: Python GUI開發,簡介 & 環境安裝
Python一般給人的印象就是黑白的介面,Script的語言只能在醜陋的command line下執行,大部分人的選擇也許會是開發成網頁的方式,有個Web的介面去做溝通。 但也許你和我一樣不懂網頁開發,或是想要開發PC上的GUI視窗化應用程式,這時候就需要一些工具來幫助使Python也能畫出漂亮的圖形介面。
How to Create GUI with Python?
Python有許多的套件可以提供GUI的繪製模組,其中包刮Urwid, tkInter, 與本文的主題Qt,以下來比較一下差異並理解為什麼我們選擇用Qt呢?
- Urwid : 傳統的Console mode設計方式,可使用的物件不多,且在滑鼠操作的實作上非常困難,同時也是while loop的畫面更新方式,效率低。
- tkInter : 最悠久的官方套件,是許多人的首選,但在開發上都是純手工,也就是所有的排版、布局都要自己去調整,甚是累人,也有坑很多一說。
- Qt : 專為GUI應用程式的開發而生的套件,原為C++所開發的Library,而後推出python的library,功能完全復刻幾乎在可以無痛轉換語言。
What's Great of Qt?
Qt雖然是為開發GUI而生的套件,但又有什麼厲害的呢?
- 圖形化開發介面 : 沒錯就想畫圖就開用PS,Qt開發了一套GUI程式,另使用者可以利用簡單的拖拉就完成前端GUI的排版、設計並與後端串接。
- 無痛轉換語言 : 如果是Qt原C++的開發者,由於Qt Python的lib索引架構以及物件名稱全都和原生C++一模一樣,在轉換上完全不需要擔心。
- 資源豐富 : 比起其他套件的資源不豐富,因為第2點的關係,同時可以搜尋Qt C++以及PyQt的教學,遇到bug時網路上的討論串也更多,減少踩坑的機會。
PyQt vs PySide2, what’s the different
網路上查詢PyQt時,可能會發現同時有兩個不同的套件PyQt以及PySide甚至PySide2,到底差異是什麼呢?
Long story short, pyQt 的開發進度在過去是超前第一代PySide的,但自從PySide2被Qt官方認證為標準Qt+python開發元件後,突飛猛進。 另外,由於是官方認證,在類別以及名稱分類上,甚至不用看pyside document, 直接看Qt C++版本的document也能了然,並使用順暢。
以下在列出幾個比較:
PyQt
- python 3 only
- 5.12
- Official Document: PyQt
PySide2
- python 3 & python 2(not support Win)
- currently 5.14 (2020)
- Official Document: PySide2
本系列將以PySide2為開發工具,已達與官方整合度更高為目的。
Get Start
蛇說:生存,環境很重要
Tools
- pyCharm : QtCreator 用久了,比起重學visual studio, 現成的IDE更速成
- python 3.5↑ : 肉身測試,跨平台、可用功能在該版本↑ 的python更完整
- PySide2 : 5.12 為目前測試最穩定之版本,選用其他版本請挑LTS為佳
- QtCreator / QtDesigner : 用作UI的開發,除非你跟我以樣喜歡手刻UI
- Mac , Linux : 熟悉cmdline 你將擁有全世界,丟掉Win那廢… 要玩遊戲記得撿回來
Install python3
- 到python 官網下載並安裝相對應的平台以及你喜歡的版本
2. 雙擊安裝…當然不是!身為工程師就該打開readme好好看一下,按照readme.rst內的指令安裝程式。如果選擇的版本有installer也可以直接用圖形介面安裝
3. 確認python3無誤,輸入指令
python3 -V
Install PySide2
使用pip3 安裝PySide2 並選擇你喜歡的版本,如果沒有選擇版本號,將安裝最新版本,可能是5.14之類的
pip3 install PySide2==5.12.6
也可以使用pyCharm 內的UI介面下載PySide2
Install Qt Designer
如果你是原Qt的開發者,那相信已經很熟悉Qt的UI開發了,QtCreator IDE內也已經包含Qt Designer。
如果不是,或是你想我一樣只買了256GB的Mac(好窮嗚嗚)那安裝QtDesigner會省下不少空間,安裝時也輕鬆不少。
- Download QtDesigner Installer
- Install it!
結論
我才不要跟其他教學文一樣
你以為…我要給你個source code嗎?當然不會!現在才剛開始呢!
如果你是Python新手,先熟悉一下pyCharm的界面吧!
如果你是Qt的新手,就了解一下Qt Designer的使用方式吧!
我是夜海中的宅男DekBan,我們下次見,see ya next night.
Next Step: PySide #2: GUI帶你擺脫黑白人生