- PyQt 教程
- PyQt - 首頁
- PyQt - 簡介
- PyQt - 環境搭建
- PyQt - Hello World
- PyQt 主要類
- PyQt - 使用 Qt Designer
- PyQt - 元物件
- PyQt 訊號與槽
- PyQt - 訊號和槽
- PyQt - 支援和訊號
- PyQt - 未繫結和已繫結訊號
- PyQt - 使用 PyQtSignal 建立新訊號
- PyQt - 連線、斷開和發射訊號
- PyQt - 槽裝飾器
- PyQt - 槽連線
- PyQt 佈局
- PyQt - 佈局管理
- PyQt - QBoxLayout
- PyQt - QGridLayout
- PyQt - QFormLayout
- PyQt - QHBoxLayout
- PyQt - QVBoxLayout
- PyQt - QStackedLayout
- PyQt - QGraphicsGridLayout
- PyQt - QGraphicsAnchorLayout
- PyQt - QGraphicsLayout
- PyQt - QGraphicsLinearLayout
- PyQt 基本控制元件
- PyQt - 基本控制元件
- PyQt - QLabel 控制元件
- PyQt - QLineEdit 控制元件
- PyQt - QPushButton 控制元件
- PyQt - QRadioButton 控制元件
- PyQt - QCheckBox 控制元件
- PyQt - QComboBox 控制元件
- PyQt - QSpinBox 控制元件
- PyQt - QMessageBox
- PyQt - QDialogButtonBox 控制元件
- PyQt - QFontComboBox 控制元件
- PyQt - QDoubleSpinBox 控制元件
- PyQt - QToolBox 控制元件
- PyQt - QDialog 類
- PyQt - QMessageBox
- PyQt - 多文件介面
- PyQt - 拖放操作
- PyQt 繪圖 API
- PyQt - 繪圖 API
- PyQt 資料庫
- PyQt - 資料庫操作
- PyQt 核心知識
- PyQt - BrushStyle 常量
- PyQt - QClipboard
- PyQt - QPixmap 類
- PyQt 有用資源
- PyQt - 快速指南
- PyQt - 有用資源
- PyQt - 討論
PyQt 主要類
PyQt 模組
PyQt API 包含大量的類和方法。這些類定義在 20 多個模組中。以下是常用的一些模組:
| 序號 | 模組及描述 |
|---|---|
| 1 |
QtCore 其他模組使用的核心非 GUI 類 |
| 2 |
QtGui 圖形使用者介面元件 |
| 3 |
QtMultimedia 低階多媒體程式設計類 |
| 4 |
QtNetwork 網路程式設計類 |
| 5 |
QtOpenGL OpenGL 支援類 |
| 6 |
QtScript 用於評估 Qt 指令碼的類 |
| 7 |
QtSql 使用 SQL 進行資料庫整合的類 |
| 8 |
QtSvg 用於顯示 SVG 檔案內容的類 |
| 9 |
QtWebKit 用於渲染和編輯 HTML 的類 |
| 10 |
QtXml 用於處理 XML 的類 |
| 11 |
QtAssistant 線上幫助支援 |
| 12 |
QtDesigner 用於擴充套件 Qt Designer 的類 |
PyQt 中的類
PyQt API 包含 400 多個類。QObject 類位於類層次結構的頂層。它是所有 Qt 物件的基類。此外,QPaintDevice 類是所有可繪製物件的基類。
QApplication 類管理 GUI 應用程式的主要設定和控制流程。它包含主事件迴圈,在該迴圈中處理和分派由視窗元素和其他來源生成的事件。它還處理系統範圍和應用程式範圍的設定。
QWidget 類繼承自 QObject 和 QPaintDevice 類,是所有使用者介面物件的基類。QDialog 和 QFrame 類也繼承自 QWidget 類。它們有自己的子類系統。
下圖顯示了一些重要類及其繼承關係。
這裡列出了一些常用的控制元件:
以下是常用的控制元件。
| 序號 | 控制元件及描述 |
|---|---|
| 1 |
QLabel 用於顯示文字或影像 |
| 2 |
QLineEdit 允許使用者輸入一行文字 |
| 3 |
QTextEdit 允許使用者輸入多行文字 |
| 4 |
QPushButton 一個命令按鈕,用於觸發操作 |
| 5 |
QRadioButton 允許從多個選項中選擇一個 |
| 6 |
QCheckBox 允許選擇多個選項 |
| 7 |
QSpinBox 允許增加/減少整數值 |
| 8 |
QScrollBar 允許訪問超出顯示區域的控制元件內容 |
| 9 |
QSlider 允許線性更改繫結值。 |
| 10 |
QComboBox 提供一個下拉列表供使用者選擇 |
| 11 |
QMenuBar 包含 QMenu 物件的水平條 |
| 12 |
QStatusBar 通常位於 QMainWindow 底部,提供狀態資訊。 |
| 13 |
QToolBar 通常位於 QMainWindow 頂部或浮動。包含操作按鈕 |
| 14 |
QListView 以 ListMode 或 IconMode 提供一個可選擇的專案列表 |
| 15 |
QPixmap 用於在 QLabel 或 QPushButton 物件上顯示的螢幕外影像表示 |
| 16 |
QDialog 模態或非模態視窗,可以將資訊返回給父視窗 |
一個典型的基於 GUI 的應用程式的頂級視窗是由QMainWindow 控制元件物件建立的。上面列出的一些控制元件在其指定位置佔據主視窗,而其他控制元件則使用各種佈局管理器放置在中央控制元件區域。
下圖顯示了 QMainWindow 框架:
PyQt 中一些主要類的示例
1. QMainWindow:GUI 應用程式的基礎
QMainWindow 代表主應用程式視窗,提供一個集中的中心來組織控制元件、選單、工具欄等等。透過繼承 QMainWindow,開發人員可以快速建立健壯的應用程式框架,而無需編寫大量的樣板程式碼。
from PyQt6.QtWidgets import QMainWindow, QApplication
import sys
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# Initialize and configure UI elements
self.setWindowTitle("PyQt Major Classes Demo")
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
輸出
2. QWidget:使用者介面的構建塊
在 PyQt 中,QWidget 用作構建使用者介面的基本構建塊。從按鈕到文字輸入,螢幕上的每個可見元素最終都源自 QWidget 類。
from PyQt6.QtWidgets import QMainWindow, QApplication, QWidget
import sys
class CustomWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# Initialize and configure custom UI elements
self.setWindowTitle("PyQt Qwidget class")
if __name__ == "__main__":
app = QApplication(sys.argv)
window = CustomWidget()
window.show()
sys.exit(app.exec())
輸出
3. QLabel、QPushButton 及其他:專用控制元件
除了 QMainWindow 和 QWidget 等核心類之外,PyQt 還提供了許多專門的控制元件,以滿足不同的使用場景。QLabel 用於顯示文字和影像,QPushButton 用於建立互動式按鈕,而 QComboBox 和 QCheckBox 簡化了使用者輸入和選擇。
import sys
from PyQt6.QtWidgets import QApplication, QMainWindow, QLabel, QPushButton, QVBoxLayout, QWidget
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle("PyQt Major Classes Demo")
# Create QLabel
label = QLabel("Hello, PyQt!")
# Create QPushButton
button = QPushButton("Click Me")
button.clicked.connect(self.onButtonClick)
# Create a vertical layout
layout = QVBoxLayout()
layout.addWidget(label)
layout.addWidget(button)
# Create a central widget and set the layout
central_widget = QWidget()
central_widget.setLayout(layout)
self.setCentralWidget(central_widget)
def onButtonClick(self):
print("Button clicked!")
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
輸出