開始在知乎寫文章的原因,主要還是想整理平時的經驗,方便自己以后查看,有機會的話大家也可以交流吧。
11月中旬由於項目需要,和另一名實習生負責使用Python開發一個數據分析的小軟件。
雖然才開始接觸Qt,屬於菜鳥,但是由於第一步就需要用到它,所以第一篇文章就講講它吧。查了一些資料后,我們決定使用Qt Designer進行設計,然后轉換為py文件,再使用PyQt5完成信號槽等操作,將我們基於sklearn加工而成的類和函數connect給信號槽。
1. PyQt5和Qt Designer的安裝
pip install pyqt5 pip install pyqt5-tools
安裝完成后,Python安裝目錄下的Lib\site-packages\pyqt5-tools\designer\designer.exe即是Qt Designer軟件。我用的是anaconda,所以Qt Designer軟件在:C:\ProgramData\Anaconda3\Lib\site-packages\pyqt5_tools\designer.exe
安裝中遇到的兩個問題以及解決思路:
(1)安裝不了或者安裝速度太慢。
可以嘗試到官網或Python Extension Packages for Windows下載到本地,然后再用pip install安裝。
(2)安裝失敗:***.whl is not a supported wheel on this platform
在Python中輸入以下代碼,查看目前版本Python所支持的whl類型,然后下載相應的whl文件,再用pip install安裝。
print(pip.pep425tags.get_supported())
2.Qt Designer簡介
安裝完成后,打開Qt Designer,界面是這樣子的:
(1)由於是菜鳥,我們主要用到的是圖中標出的4個區域,先介紹一下它們:
區域1是控件和布局,需要使用哪種控件和布局,可以直接將其拉到區域4。
區域2列出了已被使用的所有控件,以及它們之間的隸屬關系。
區域3是控制屬性面板,可以設置控件的各種屬性,比如大小和字體等,以及控件下屬的各個控件的布局。
(2)區域1的控件簡介:
這里只介紹部分我們使用到的控件,其他的可以參考官方文檔:Qt Designer Manual
Buttons:
Push Button:用作按鈕
Radio Button:用作單項選擇的小圓圈
Check Box:用作多項選擇的小方框
Containers:
Group Box:用作不同區塊的容器
Tab Widget:用作不同頁的分頁按鈕
Input Widgets:
Combo Box:用作下拉菜單
Line Edit:用於給用戶輸入
Display Widgets:
Label:用作界面的文字提示
Text Browser:用於輸出的顯示,應該注意的是它沒法輸出圖形
3. 一個簡單的UI示例
(1)通過上面介紹的控件,可以簡單創建一個UI,在創建時沒必要強制每個控件都完全對齊,因為之后會通過選擇網格對齊來調整整個界面。
注意:養成良好的習慣。最好在創建控件后,在控件屬性的區域更改每個控件的名稱,因為在UI設計完成之后,導出成py文件並創建信號槽操作時,需要用到這些名稱。如果名稱沒有更改好,不僅創建信號槽時很抓狂,維護起來也會令人窒息!!!
(2)創建好UI后,在最頂層方框右擊 → Lay out → Lay out in a grid,即可在網格中對其各個控件。這樣做有一個好處,即在最后創建好的視圖中,每個控件的大小會隨着窗口的大小而改變。如果不這樣做,那當窗口大小改變時,控件大小不變,畫風會很奇特。
通過網格布局后,可以通過圖中區域1,調整控件的比例。當控件很多時,調整起來會比較麻煩,需要細心處理。
最后,當UI設計完成后,可以Ctrl+R預覽效果。
4.保存ui並轉換成py文件
將完成的UI保存為.ui文件,我保存的路徑為E:\test.ui,然后在cmd中通過下面代碼即可將其轉換成.py文件。
pyuic5 -o E:\test.py E:\test.ui
轉換完成后,結果如下,在Python中即可使用PyQt5來進行信號槽等操作了。