PyQt5開發實踐(一、準備篇)

曦遠發表於2021-06-15

前言

近一年來我開發了不少PyQt小專案,因為之前沒用過使用C++語言的Qt,所以可以算是從零基礎開始邊學邊做的,這個過程中再一次體會到國內技術社群的匱乏…… 國內關於PyQt的資料說少不少,說多也不多,主要是比較零散,也沒什麼比較好用的系統的學習資料… 所以這個PyQt,全靠看文件和國外社群,還有一個最重要的:自己摸索……

開發環境搭建

本文的開發環境搭建一部分是從書裡學來的,一部分是實踐中總結的,總之在目前沒有一種比較好用的PyQt整合開發工具的情況下,達到暫時的比較高效的開發模式。

目前我用的PyQt開發方式沿用傳統的MVC架構,將介面佈局和邏輯實現分開~

具體:

  • 用QtDesigner設計好介面,儲存為*.ui檔案,然後使用PyQt工具中的pyuic5將ui檔案轉換為py檔案,這個就是view
  • 在controller包新建對應的py檔案,用來實現介面中的相應邏輯

專案結構參考:

使用QtDesigner

這個QtDesigner很簡陋,別說跟VS比,就是跟Android Studio或者是IDEA裡的Swing介面設計工具比起來,都算是弟弟,大概相當於98年的VB6.0六七成水平吧……

不過也聊勝於無,至少能設計簡單的介面,就可以了。

由於Flutter、Android App寫多了,我很習慣用各種線性佈局,Qt在佈局方面也不賴,有Hlayout和Vlayout可以用,在QtDesigner裡使用也很方便:建立一個Main window,然後放幾個控制元件上去,右鍵設定佈局就好了,然後就可以盡情使用HLayout或者VLayout、GridLayout各類元件來做佈局,如圖:

安裝PyQt工具

為了能使用前文提到的諸如QtDesigner、pyuic5工具,需要先安裝。

pip install pyqt5
pip install pyqt5-tools

安裝完之後就可以在Python安裝目錄下的Lib/site-packages下找到PyQt5pyqt5-tools資料夾,我們要的QtDesigner、pyuic5等工具就在pyqt5-tools資料夾下。

在PyCharm中配置外部工具

為了讓PyCharm可以更方便的做PyQt開發,還得配置幾個外部工具,配置完之後進行一些快捷操作:比如右鍵ui檔案可以直接使用QtDesigner開啟,也可以使用將UI檔案轉換為py檔案,如圖:

具體配置方法如下:

首先,File->Settings,開啟PyCharm的設定,選擇到External Tools介面,如圖

這裡選擇加號按鈕開啟新增頁面,我們先把QtDesigner新增進去,如圖

接著新增pyuic5工具,這個工具的命令引數格式是這樣的:

{pyuic5_path} -o {target_path} {file_path}

所以配置方法是這樣:

引數部分我再複製一下:

-o $FileDir$/$FileNameWithoutExtension$.py $FilePath$

推薦一個小開源專案

這是我之前寫的一個簡單的視訊合併工具,下面是簡單專案介紹

想合併視訊,但是卻找不到比較好用的工具,很多都要收費,我想著「這破功能還得收費?」,於是決定自己搞一個,一開始用Python做了一個,效果還不錯,完美完成了我的視訊合併任務,不過沒有圖形介面,想分享給朋友一起用也沒辦法,於是用Qt寫了個圖形介面套上去就有了本專案

地址:https://github.com/Deali-Axy/VideoMerge

推薦一本書

雖說國內系統的學習資料很少,不過也是讓我找到了這本

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

也算是對整本書的內容瞭解得七七八八吧,前面對搭建PyQt開發環境什麼的,還是有些幫助的,後面各種元件的介紹就沒那麼詳細了,有些有用的東西書裡都沒有涉及到,還是得依靠Google。so,這本書只能說是矮子裡挑高個,差強人意吧~

歡迎交流

程式設計實驗室專注於網際網路熱門新技術探索與團隊敏捷開發實踐,在公眾號「程式設計實驗室」後臺回覆 linux、flutter、c#、netcore、android、kotlin、java、python 等可獲取相關技術文章和資料,同時有任何問題都可以在公眾號後臺留言~

相關文章