天天看點

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

之前給大夥介紹了下 tkinter,有朋友希望小帥b對其它的 Python GUI 架構也說道說道,那麼今天就來說說 PyQt5 如何建立使用者界面。

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

Qt 是用 C++ 寫的開發工具,其中包含一個非常強大的 GUI 架構,寫出來的程式可以輕松運作在不同的作業系統中, PyQt 就是用 Python 基于它實作的,這樣我們可以使用 Python 來調用 Qt 中的 C++ 方法, 進而簡單的實作使用者界面程式,建構的時候也不會犧牲 C++ 的速度。

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

還有,它可以運作在 Windows,Linux,Android,MacOS,iOS 等常見的系統裡面。

那麼,怎麼玩它呢?接下來就是:

學習 Python 的正确姿勢
pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

如果你之前沒有安裝過 PyQt5 的話可以使用 pip 安裝一下:

pip install PyQt5

安裝完了之後,首先導入PyQt5:

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

接着可以建立一下視窗,繼承 QMainWindow, 然後想在自己的視窗中幹嘛就幹嘛,這裡先定義一下視窗的标題:

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

接着建立 app:

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

這裡傳入了 sys.argv 主要是用來接收指令行傳入的參數,如果你不需要的話,直接傳個空 list 也是可以的:

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

接着我們把剛剛的視窗執行個體化一下,show 出來:

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

最後讓 app 循環等待互動:

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

運作一波,一個可愛的小視窗躍然于你我的心中:

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

接着我們在這個視窗裡面塞點元件吧。

為了友善,我們直接把所有的元件導進來吧:

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

每個元件都是一個對象,先來加個文本,可以這樣:

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

運作一波就是這樣:

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

一樣的,每個元件的屬性都可以自行設定樣式和位置:

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

這裡我們設定字型顔色為熟悉的綠色,然後讓它居中對其,其中的 Qt 可以通過 PyQt5.QtCore 導入:

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

運作一波:

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

其它的元件等下再介紹,我們先來了解一下 PyQt5 的布局。

PyQt5 的 Layout 有好幾種,我分别跟你說一下:

垂直的布局,QVBoxLayout:

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

我們在這裡建立了一個 QVBoxLayout ,并且在剛剛的 Label 下建立了一個按鈕,把這兩元件都塞到這個垂直的 layout 裡面去,最後顯示到我們的視窗中,就變成這樣了:

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

水準布局,QHBoxLayout:

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

同樣的道理,隻不過我們這次換成了水準的 Layout ,運作一波就是水準排放了:

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

表格布局,QGridLayout:

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

和上次 tkinter 說的一樣,你也可以把一個視窗看成一個表格,這裡我們使用 QGridLayout ,然後把元件放在你想放的單元格中去,我們添加了一個 label 和四個 button ,讓它們分别放在不同的單元格中,運作一波就是這樣:

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

以上這幾個就是常用到的布局方式。

接着我們再來了解一下按鈕元件的點選時間綁定,比如我們想當使用者點選 “滾” 的時候,讓 “你被綠了” 變成 “對不起,我錯了!”,可以這樣實作:

調用 connect 方法來綁定點選事件的回調:

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

那麼這時候點選的 Button0 的時候就會調用 changeText 方法:

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

運作一波就是這樣:

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

當然,你也可以自定義一個按鈕,繼承 QPushButton,然後攔截點選事件,在自己的按鈕中處理,像這樣建立一個自己的按鈕,然後當觸發滑鼠點選按鈕的時候就會調用 mousePressEvent 方法:

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

接着在視窗執行個體化一個,然後添加到 Layout 中去:

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

運作一波:

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

接着我們來看看彈窗,比如我們想要點選 “滾啊” 就彈出一個視窗,那麼就可以這樣:

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

綁定的 showDialog 方法,這裡主要彈出一個輸入确認框,當使用者按确認的時候就改變 Label 的文本内容:

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

運作一波:

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

當然,你完全可以自定義一個 Dialog, 直接繼承 QDialog 然後在裡面定義你想要彈窗的内容,比如這裡我就讓它彈出一個和原本視窗一樣的内容:

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

當點選 “滾啊” 的時候,執行個體化自己的 Dialog :

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

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

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

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

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

運作起來是這樣子的:

pyqt建立視窗沒有句柄_Python 建立使用者界面之 PyQt5 的使用

上面這個元件代碼是官方提供的,考慮到有些 b 友網絡有毛病,幫你上傳了,在`wx`發

5

擷取吧。

感興趣的話可以到以下連結看更多相關的内容:

https://build-system.fman.io/pyqt5-tutorialhttps://www.qt.io/

ok,以上就是小帥b今天給你帶來的分享,那麼我們下回見,

peace!