使用PyQt5調用Qt程序,基礎PythonQt控件的使用方法


我們先看一段qt Python代碼

from PyQt5.QtWidgets import QApplication, QLabel app = QApplication([]) label = QLabel('Hello World!') label.show() app.exec_()

導入相關的QT相關的庫。

接着是通過創建了一個QApplication:

app = QApplication([])

這是必須要創建的一個對象。每個GUI程序都必須有且只有一個QApplication的實例。如果沒有這個實例的話,我們寫的QT是沒法執行的,所以我們寫QT代碼的時候一定不要忘了創建這個對象。 創建這個對象時需要傳遞一個list參數,因為我們的GUI不需要什么參數,所以直接傳遞了一個[]。

在創建了app之后,我們又創建了一個Label(標簽):

label = QLabel('Hello World!')

傳遞的參數就是標簽顯示的內容,然后通過調用show()方法讓它在屏幕上顯示。

最后的一行代碼是告訴qt一直運行下去,直到有人關閉它。

完成上述工作之后,執行代碼,我們的一個小小窗口就會顯示在屏幕上:

QVBoxLayout example Widgets 我們在Qt程序中看到的每個東西都可以稱之為一個widget:按鈕,標簽,窗口,對話框,程序的進度條等等。與HTML元素類似,widget一般也都是嵌入式的。舉個例子,一個窗口包含了一個按鈕,同時也可能包含了一個標簽。

下面的截圖展示了QT中常用的widget。

Screenshot of common Qt widgets using the Fusion style 從上到下,從左到右,這些widget依次是:

QLabel
QComboBox
QCheckBox
QRadioButton
QPushButton
QTableWidget
QLineEdit
QSlider
QProgressBar
Layouts

正如上面的截圖所示,我們的GUI中可能包含了多個widgets。在這種情況下,我們需要告訴QT如何安放這些widgets。例如。我們可以使用QVBoxLayout垂直堆放widget:

QVBoxLayout example 這個截圖的代碼如下:

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout app = QApplication([]) window = QWidget() layout = QVBoxLayout() layout.addWidget(QPushButton('Top')) layout.addWidget(QPushButton('Bottom')) window.setLayout(layout) window.show() app.exec_()

一如既往,我們還是先創建了一個QApplication。接着我們創建了一個window。我們使用的是最基本的QWdiget,因為它只是一個容器,用來放置widget,我們並不需要它有什么特殊的功能。然后,我們就創建了一個layout,還創建了兩個QPushButton放在里面。最后,我們告訴了window,我們需要使用這個layout。然后就跟我們的第一個GUI一樣,調用show()和exec_()。

當然還有很多其他的layout,例如QHBoxLayOut等等。更多的風格,可以在qt的網站上查閱

自定義風格 QT一個比較強大的地方就是它支持自定義的用戶風格。

風格設置 比較直接的設置方式就是在我們的程序中直接指定全局的風格。我們再看看之前的截圖:

Screenshot of common Qt widgets using the Fusion style 上面的這個窗口風格稱之為Flusion,我們也可以把他替換成Windows風格:

Screenshot of common Qt widgets using the Windows style 通過qpp.setStyle(...)方法,我們就可以設置自己的風格了。

from PyQt5.QtWidgets import * app = QApplication([]) app.setStyle('Fusion') ...

具體支持什么樣的風格依賴於我們使用的操作系統,但是一般都支持以下的風格:'Fusion', 'Windows', 'WindowsVista'(僅Windows支持) and 'Macintosh' (僅Mac支持)

自定義顏色 如果我們喜歡一種風格,但是我們想改變一些顏色。那么我們就可以使用QPalette來實現我們的功能。例如:

from PyQt5.QtCore import Qt from PyQt5.QtGui import QPalette from PyQt5.QtWidgets import QApplication, QPushButton app = QApplication([]) app.setStyle('Fusion') palette = QPalette() palette.setColor(QPalette.ButtonText, Qt.red) app.setPalette(palette) button = QPushButton('Hello World') button.show() app.exec_()

除了上述的功能之外,我們還可以通過面板風格來改變我們程序的外觀。這就是QT類似於CSS的特性。我們可以通過以下的方法我們的面板添加一些空間:

from PyQt5.QtWidgets import QApplication, QPushButton app = QApplication([]) app.setStyleSheet("QPushButton { margin: 10ex; }") button = QPushButton('Hello World') button.show() app.exec_() Qt window with a button surrounded by extra space

更多關於面板風格的信息,可以查看qt官網。

Signals / slots QT 通過Signals(信號)機制來讓我們對一些事件做響應,例如我們點擊了一個按鈕。下面的這個例子就是當我們點擊按鈕時,會彈出對話框。

from PyQt5.QtWidgets import * app = QApplication([]) button = QPushButton('Click') def on_button_clicked(): alert = QMessageBox() alert.setText('You clicked the button!') alert.exec_() button.clicked.connect(on_button_clicked) button.show() app.exec_() PyQt QMessageBox saying that a button was clicked

button.clicked這就是個signal(信號),.connect(...)就是我們指定的與這個signal關聯的slot(槽)。上面這是一個簡單的響應函數,當我們點擊這個按鈕的時候,這個動作(函數)就會觸發。

Signals在QT中是無處不在的,用戶也可以定義自己的signal。

編譯屬於自己的APP

 

 Qt-UI C++Python界面開發工具 UI開發工具 qt解決方案 qt開源項目

更多詳情請瀏覽

www.qt-ui.com

www.qt-ui.com.cn

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM