首頁>技術>

這個PyQt5教程展示瞭如何使用Python 3和Qt在Windows,Mac或Linux上建立GUI,幾分鐘就可以快速讓你對Qt有個初步印象。

什麼是PyQt5?

PyQt 是一個庫,可讓您使用Python版本的 Qt GUI框架。Qt本身是用C ++編寫的,透過Python使用它,您可以更快地構建應用程式,並且不會犧牲很多C ++的速度。

PyQt5指的是Qt的最新版本5。您可能仍然會在網路上看到(Py)Qt4的提法,但該版本很舊,不再受支援。

PyQt的一個有趣的新競爭對手是 Python的Qt,其API實際上是相同的,與PyQt不同,它是根據LGPL許可的,因此可以在商業專案中免費使用。它得到了Qt公司的支援,因此很有可能成為未來。我們在這裡使用PyQt是因為它更加成熟。由於這些API非常相似,因此您以後可以輕鬆將應用切換到Qt for Python。

安裝PyQt

在Python中管理依賴項的最佳方法是透過虛擬環境(venv)。虛擬環境只是一個本地目錄,其中包含特定專案的庫。要在當前目錄中建立虛擬環境,請執行以下命令:

這將建立venv/資料夾,要在Windows上啟用虛擬環境,請執行:

在Mac和Linux上,使用:

您可以透過(venv)shell中的字首看到虛擬環境處於活動狀態 :

現在要安裝PyQt,請執行以下命令:

我們使用版本5.9.2的原因是並非所有(Py)Qt版本都同樣穩定,此版本比較新並且保證可以使用。恭喜!您已成功設定PyQt5。

建立一個GUI

是時候編寫我們的第一個GUI應用程式了!在虛擬環境仍處於活動狀態的情況下,啟動Python。我們將執行以下命令:

首先,我們告訴Python透過import語句載入PyQt:

接下來,我們 使用以下命令建立一個 : QApplication

這是Qt的要求:每個GUI應用程式必須恰好有一個例項QApplication。在執行上述程式碼之前,Qt的許多部分都無法正常工作。因此,幾乎您編寫的每個(Py)Qt應用程式都將需要它。

[]括號表示傳遞給應用程式的命令列引數,由於我們的應用程式不使用任何引數,因此將方括號留空。

現在,要實際看到一些東西,我們建立一個簡單的標籤:

然後,我們告訴Qt在螢幕上顯示標籤:

根據您的作業系統,這已經打開了一個很小的小視窗:

最後一步是將控制權交給Qt,並要求它“執行應用程式,直到使用者關閉它”。這是透過以下命令完成的:

如果所有這些都按預期工作,那麼做得好!您剛剛使用Python和Qt構建了第一個GUI應用程式。

以下螢幕截圖顯示了最常見的Qt小部件:

從上到下,從左到右,它們是:

QLabelQComboBoxQCheckBoxQRadioButtonQPushButtonQTableWidgetQLineEditQSliderQProgressBar版面

像上面的示例一樣,您的GUI很可能包含多個小部件。在這種情況下,您需要告訴Qt如何放置它們。例如,您可以使用 QVBoxLayout 垂直堆疊小部件:

該螢幕截圖的程式碼是:

和以前一樣,我們例項化一個QApplication。然後,我們建立一個window。我們使用最基本的型別 QWidget,因為它僅充當容器,我們不希望它具有任何特殊行為。接下來,我們建立layout並向其中新增兩個QPushButton。最後,我們告訴視窗使用此佈局(並因此使用其內容)。與第一個應用程式一樣,我們以.show()和 結束呼叫app.exec()。

當然,還有許多其他種類的佈局(例如, QHBoxLayout用於連續排列專案)。有關概述,請參見Qt的文件 。

自定義樣式

Qt的優勢之一是對自定義樣式的支援,有許多機制可讓您自定義應用程式的外觀。本節概述了一些內容。

內建樣式

更改應用程式外觀的最粗略方法是設定全域性 Style,回顧上面的小部件螢幕截圖:

這使用一種稱為的樣式Fusion,如果改用Windows樣式,則其外觀如下:

要應用樣式,請使用app.setStyle(...):

可用樣式取決於你的平臺上,但通常 'Fusion','Windows', 'WindowsVista'(僅Windows)和 'Macintosh'(僅限Mac)。

自定義顏色

如果您喜歡某個樣式,但想要更改其顏色(例如,更改為深色主題),則可以使用 QPalette 和app.setPalette(...)。例如:

樣式表

除上述內容外,您還可以透過樣式表更改應用程式的外觀。這是Qt的CSS類似物。例如,我們可以使用它來新增一些間距:

有關樣式表的更多資訊,請參見Qt的文件。

有趣的一行在上面高亮顯示: button.clicked是一個訊號, .connect(...)讓我們在其上安裝一個所謂的 插槽。這只是在訊號出現時呼叫的函式。在上面的示例中,我們的廣告位顯示了一個訊息框。

當從C ++使用Qt時,術語“插槽”很重要,因為必須在C ++中以特殊方式宣告插槽。但是,在Python中,任何函式都可以是一個插槽-我們在上面已經看到了。因此,插槽與“常規”功能之間的區別對我們而言意義不大。

概括

如果您已經做到這一點,那麼恭喜您!希望您現在對如何使用PyQt(及其各個部分)用Python編寫桌面應用程式有所瞭解,快去試試吧!

10
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Dev之TreeListLookUpEdit資料繫結