Python 創(chuàng)建用戶界面之 PyQt5 的使用
之前給大伙介紹了下?tkinter,有朋友希望小帥b對其它的 Python ?GUI 框架也說道說道,那么今天就來說說 PyQt5 如何創(chuàng)建用戶界面。
Qt 是用 C++ 寫的開發(fā)工具,其中包含一個非常強(qiáng)大的?GUI 框架,寫出來的程序可以輕松運(yùn)行在不同的操作系統(tǒng)中, PyQt 就是用 Python 基于它實(shí)現(xiàn)的,這樣我們可以使用 Python 來調(diào)用 Qt 中的 C++ 方法,?從而簡單的實(shí)現(xiàn)用戶界面程序,構(gòu)建的時候也不會犧牲 C++ 的速度。
還有,它可以運(yùn)行在 Windows,Linux,Android,MacOS,iOS 等常見的系統(tǒng)里面。
那么,怎么玩它呢?接下來就是:
學(xué)習(xí) Python 的正確姿勢
如果你之前沒有安裝過 PyQt5 的話可以使用 pip 安裝一下:
pip install?PyQt5
安裝完了之后,首先導(dǎo)入 PyQt5:
接著可以創(chuàng)建一下窗口,繼承 QMainWindow, 然后想在自己的窗口中干嘛就干嘛,這里先定義一下窗口的標(biāo)題:
接著創(chuàng)建 app:
這里傳入了 sys.argv 主要是用來接收命令行傳入的參數(shù),如果你不需要的話,直接傳個空 list 也是可以的:
接著我們把剛剛的窗口實(shí)例化一下,show 出來:
最后讓 app 循環(huán)等待交互:
運(yùn)行一波,一個可愛的小窗口躍然于你我的心中:
接著我們在這個窗口里面塞點(diǎn)組件吧。
為了方便,我們直接把所有的組件導(dǎo)進(jìn)來吧:
每個組件都是一個對象,先來加個文本,可以這樣:
運(yùn)行一波就是這樣:
一樣的,每個組件的屬性都可以自行設(shè)置樣式和位置:
這里我們設(shè)置字體顏色為熟悉的綠色,然后讓它居中對其,其中的 Qt 可以通過 PyQt5.QtCore 導(dǎo)入:
運(yùn)行一波:
其它的組件等下再介紹,我們先來了解一下 PyQt5 的布局。
PyQt5 的 Layout 有好幾種,我分別跟你說一下:
垂直的布局,QVBoxLayout:
我們在這里創(chuàng)建了一個 QVBoxLayout ,并且在剛剛的 Label 下創(chuàng)建了一個按鈕,把這兩組件都塞到這個垂直的 layout 里面去,最后顯示到我們的窗口中,就變成這樣了:
水平布局,QHBoxLayout:
同樣的道理,只不過我們這次換成了水平的 Layout ,運(yùn)行一波就是水平排放了:
表格布局,QGridLayout:
和上次 tkinter 說的一樣,你也可以把一個窗口看成一個表格,這里我們使用 QGridLayout ,然后把組件放在你想放的單元格中去,我們添加了一個 label 和四個 button ,讓它們分別放在不同的單元格中,運(yùn)行一波就是這樣:
以上這幾個就是常用到的布局方式。
接著我們再來了解一下按鈕組件的點(diǎn)擊時間綁定,比如我們想當(dāng)用戶點(diǎn)擊 “滾” 的時候,讓 “你被綠了” 變成 “對不起,我錯了!”,可以這樣實(shí)現(xiàn):
調(diào)用 connect 方法來綁定點(diǎn)擊事件的回調(diào):
那么這時候點(diǎn)擊的 Button0 的時候就會調(diào)用 changeText 方法:
運(yùn)行一波就是這樣:
當(dāng)然,你也可以自定義一個按鈕,繼承 QPushButton,然后攔截點(diǎn)擊事件,在自己的按鈕中處理,像這樣創(chuàng)建一個自己的按鈕,然后當(dāng)觸發(fā)鼠標(biāo)點(diǎn)擊按鈕的時候就會調(diào)用 mousePressEvent 方法:
接著在窗口實(shí)例化一個,然后添加到 Layout 中去:
運(yùn)行一波:
接著我們來看看彈窗,比如我們想要點(diǎn)擊 “滾啊” 就彈出一個窗口,那么就可以這樣:

綁定的 showDialog 方法,這里主要彈出一個輸入確認(rèn)框,當(dāng)用戶按確認(rèn)的時候就改變 Label 的文本內(nèi)容:

運(yùn)行一波:

當(dāng)然,你完全可以自定義一個 Dialog, 直接繼承 QDialog 然后在里面定義你想要彈窗的內(nèi)容,比如這里我就讓它彈出一個和原本窗口一樣的內(nèi)容:

當(dāng)點(diǎn)擊 “滾啊” 的時候,實(shí)例化自己的 Dialog :

這樣就可以彈出自己的窗啦:

PyQt5 的其它常用組件用起來也差不多,大概有這么一些:

運(yùn)行起來是這樣子的:

上面這個組件代碼是官方提供的,考慮到有些 b 友網(wǎng)絡(luò)有毛病,幫你上傳了,在公眾號發(fā)送 5 獲取吧。
感興趣的話可以到以下鏈接看更多相關(guān)的內(nèi)容:
https://build-system.fman.io/pyqt5-tutorialhttps://www.qt.io/
ok,以上就是小帥b今天給你帶來的分享,那么我們下回見,peace!
