PyQt5開發(fā)實踐(一、準備篇)
前言
近一年來我開發(fā)了不少PyQt小項目,因為之前沒用過使用C++語言的Qt,所以可以算是從零基礎開始邊學邊做的,這個過程中再一次體會到國內技術社區(qū)的匱乏…… 國內關于PyQt的資料說少不少,說多也不多,主要是比較零散,也沒什么比較好用的系統(tǒng)的學習資料… 所以這個PyQt,全靠看文檔和國外社區(qū),還有一個最重要的:自己摸索……
開發(fā)環(huán)境搭建
本文的開發(fā)環(huán)境搭建一部分是從書里學來的,一部分是實踐中總結的,總之在目前沒有一種比較好用的PyQt集成開發(fā)工具的情況下,達到暫時的比較高效的開發(fā)模式。
目前我用的PyQt開發(fā)方式沿用傳統(tǒng)的MVC架構,將界面布局和邏輯實現(xiàn)分開~
具體:
用QtDesigner設計好界面,保存為 *.ui文件,然后使用PyQt工具中的pyuic5將ui文件轉換為py文件,這個就是view在controller包新建對應的py文件,用來實現(xiàn)界面中的相應邏輯
項目結構參考:
使用QtDesigner
這個QtDesigner很簡陋,別說跟VS比,就是跟Android Studio或者是IDEA里的Swing界面設計工具比起來,都算是弟弟,大概相當于98年的VB6.0六七成水平吧……
不過也聊勝于無,至少能設計簡單的界面,就可以了。
由于Flutter、Android App寫多了,我很習慣用各種線性布局,Qt在布局方面也不賴,有Hlayout和Vlayout可以用,在QtDesigner里使用也很方便:創(chuàng)建一個Main window,然后放幾個控件上去,右鍵設置布局就好了,然后就可以盡情使用HLayout或者VLayout、GridLayout各類組件來做布局,如圖:

安裝PyQt工具
為了能使用前文提到的諸如QtDesigner、pyuic5工具,需要先安裝。
pip install pyqt5
pip install pyqt5-tools
安裝完之后就可以在Python安裝目錄下的Lib/site-packages下找到PyQt5和pyqt5-tools文件夾,我們要的QtDesigner、pyuic5等工具就在pyqt5-tools文件夾下。
在PyCharm中配置外部工具
為了讓PyCharm可以更方便的做PyQt開發(fā),還得配置幾個外部工具,配置完之后進行一些快捷操作:比如右鍵ui文件可以直接使用QtDesigner打開,也可以使用將UI文件轉換為py文件,如圖:

具體配置方法如下:
首先,F(xiàn)ile->Settings,打開PyCharm的設置,選擇到External Tools界面,如圖

這里選擇加號按鈕打開添加頁面,我們先把QtDesigner添加進去,如圖

接著添加pyuic5工具,這個工具的命令參數(shù)格式是這樣的:
{pyuic5_path} -o {target_path} {file_path}
所以配置方法是這樣:

參數(shù)部分我再復制一下:
-o $FileDir$/$FileNameWithoutExtension$.py $FilePath$
推薦一個小開源項目
這是我之前寫的一個簡單的視頻合并工具,下面是簡單項目介紹
想合并視頻,但是卻找不到比較好用的工具,很多都要收費,我想著「這破功能還得收費?」,于是決定自己搞一個,一開始用Python做了一個,效果還不錯,完美完成了我的視頻合并任務,不過沒有圖形界面,想分享給朋友一起用也沒辦法,于是用Qt寫了個圖形界面套上去就有了本項目

地址:https://github.com/Deali-Axy/VideoMerge
推薦一本書
雖說國內系統(tǒng)的學習資料很少,不過也是讓我找到了這本

忘記在哪找的PDF了,里面是沒有目錄的,查閱起來很費勁,我花時間整本書過了一遍,手動標注了目錄,如圖

也算是對整本書的內容了解得七七八八吧,前面對搭建PyQt開發(fā)環(huán)境什么的,還是有些幫助的,后面各種組件的介紹就沒那么詳細了,有些有用的東西書里都沒有涉及到,還是得依靠Google。so,這本書只能說是矮子里挑高個,差強人意吧~
歡迎交流
程序設計實驗室專注于互聯(lián)網熱門新技術探索與團隊敏捷開發(fā)實踐,在公眾號「程序設計實驗室」后臺回復 linux、flutter、c#、netcore、android、kotlin、java、python 等可獲取相關技術文章和資料,同時有任何問題都可以在公眾號后臺留言~
博客園:https://www.cnblogs.com/deali/ 打代碼直播間:https://live.bilibili.com/11883038 知乎:https://www.zhihu.com/people/dealiaxy

