![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CZzEWO5EjN4QmMjNWM0MWMzEmYxMGN1AjZ1MzM3EDZl9CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
之前給大夥介紹了下 tkinter,有朋友希望小帥b對其它的 Python GUI 架構也說道說道,那麼今天就來說說 PyQt5 如何建立使用者界面。
Qt 是用 C++ 寫的開發工具,其中包含一個非常強大的 GUI 架構,寫出來的程式可以輕松運作在不同的作業系統中, PyQt 就是用 Python 基于它實作的,這樣我們可以使用 Python 來調用 Qt 中的 C++ 方法, 進而簡單的實作使用者界面程式,建構的時候也不會犧牲 C++ 的速度。
還有,它可以運作在 Windows,Linux,Android,MacOS,iOS 等常見的系統裡面。
那麼,怎麼玩它呢?接下來就是:
學習 Python 的正确姿勢如果你之前沒有安裝過 PyQt5 的話可以使用 pip 安裝一下:
pip install PyQt5
安裝完了之後,首先導入PyQt5:
接着可以建立一下視窗,繼承 QMainWindow, 然後想在自己的視窗中幹嘛就幹嘛,這裡先定義一下視窗的标題:
接着建立 app:
這裡傳入了 sys.argv 主要是用來接收指令行傳入的參數,如果你不需要的話,直接傳個空 list 也是可以的:
接着我們把剛剛的視窗執行個體化一下,show 出來:
最後讓 app 循環等待互動:
運作一波,一個可愛的小視窗躍然于你我的心中:
接着我們在這個視窗裡面塞點元件吧。
為了友善,我們直接把所有的元件導進來吧:
每個元件都是一個對象,先來加個文本,可以這樣:
運作一波就是這樣:
一樣的,每個元件的屬性都可以自行設定樣式和位置:
這裡我們設定字型顔色為熟悉的綠色,然後讓它居中對其,其中的 Qt 可以通過 PyQt5.QtCore 導入:
運作一波:
其它的元件等下再介紹,我們先來了解一下 PyQt5 的布局。
PyQt5 的 Layout 有好幾種,我分别跟你說一下:
垂直的布局,QVBoxLayout:
我們在這裡建立了一個 QVBoxLayout ,并且在剛剛的 Label 下建立了一個按鈕,把這兩元件都塞到這個垂直的 layout 裡面去,最後顯示到我們的視窗中,就變成這樣了:
水準布局,QHBoxLayout:
同樣的道理,隻不過我們這次換成了水準的 Layout ,運作一波就是水準排放了:
表格布局,QGridLayout:
和上次 tkinter 說的一樣,你也可以把一個視窗看成一個表格,這裡我們使用 QGridLayout ,然後把元件放在你想放的單元格中去,我們添加了一個 label 和四個 button ,讓它們分别放在不同的單元格中,運作一波就是這樣:
以上這幾個就是常用到的布局方式。
接着我們再來了解一下按鈕元件的點選時間綁定,比如我們想當使用者點選 “滾” 的時候,讓 “你被綠了” 變成 “對不起,我錯了!”,可以這樣實作:
調用 connect 方法來綁定點選事件的回調:
那麼這時候點選的 Button0 的時候就會調用 changeText 方法:
運作一波就是這樣:
當然,你也可以自定義一個按鈕,繼承 QPushButton,然後攔截點選事件,在自己的按鈕中處理,像這樣建立一個自己的按鈕,然後當觸發滑鼠點選按鈕的時候就會調用 mousePressEvent 方法:
接着在視窗執行個體化一個,然後添加到 Layout 中去:
運作一波:
接着我們來看看彈窗,比如我們想要點選 “滾啊” 就彈出一個視窗,那麼就可以這樣:
綁定的 showDialog 方法,這裡主要彈出一個輸入确認框,當使用者按确認的時候就改變 Label 的文本内容:
運作一波:
當然,你完全可以自定義一個 Dialog, 直接繼承 QDialog 然後在裡面定義你想要彈窗的内容,比如這裡我就讓它彈出一個和原本視窗一樣的内容:
當點選 “滾啊” 的時候,執行個體化自己的 Dialog :
這樣就可以彈出自己的窗啦:
PyQt5 的其它常用元件用起來也差不多,大概有這麼一些:
運作起來是這樣子的:
上面這個元件代碼是官方提供的,考慮到有些 b 友網絡有毛病,幫你上傳了,在`wx`發
5擷取吧。
感興趣的話可以到以下連結看更多相關的内容:
https://build-system.fman.io/pyqt5-tutorialhttps://www.qt.io/
ok,以上就是小帥b今天給你帶來的分享,那麼我們下回見,
peace!