Python PyQt 常用组件

PyQt 是 Python 语言的 GUI 编程工具包,它是 Qt 应用程序框架的 Python 绑定。

Qt 是一个跨平台的 C++ 图形用户界面应用程序开发框架,广泛用于开发 GUI 程序。

PyQt 提供了丰富的组件(Widgets)来构建用户界面,这些组件是构建 GUI 应用程序的基础模块。


基础窗口组件

QMainWindow

QMainWindow 是主窗口类,提供了标准的应用程序框架:

实例

from PyQt5.QtWidgets import QMainWindow, QApplication

app = QApplication([])
window = QMainWindow()
window.setWindowTitle('主窗口示例')
window.setGeometry(100, 100, 800, 600)  # x, y, width, height
window.show()
app.exec_()

QWidget

QWidget 是所有用户界面对象的基类:

实例

from PyQt5.QtWidgets import QWidget

widget = QWidget()
widget.setWindowTitle('基础窗口')
widget.show()

常用输入组件

QLabel

显示文本或图像:

实例

from PyQt5.QtWidgets import QLabel

label = QLabel('这是一个标签')
label.setStyleSheet('font-size: 16px; color: blue;')

QLineEdit

单行文本输入框:

实例

from PyQt5.QtWidgets import QLineEdit

line_edit = QLineEdit()
line_edit.setPlaceholderText('请输入内容...')

QTextEdit

多行文本编辑器:

实例

from PyQt5.QtWidgets import QTextEdit

text_edit = QTextEdit()
text_edit.setPlainText('多行文本编辑器')

QComboBox

下拉选择框:

实例

from PyQt5.QtWidgets import QComboBox

combo = QComboBox()
combo.addItems(['选项1', '选项2', '选项3'])

按钮类组件

QPushButton

普通按钮:

实例

from PyQt5.QtWidgets import QPushButton

button = QPushButton('点击我')
button.setStyleSheet('background-color: green; color: white;')

QRadioButton

单选按钮:

实例

from PyQt5.QtWidgets import QRadioButton

radio1 = QRadioButton('选项1')
radio2 = QRadioButton('选项2')

QCheckBox

复选框:

实例

from PyQt5.QtWidgets import QCheckBox

check1 = QCheckBox('选择1')
check2 = QCheckBox('选择2')

布局组件

QHBoxLayout

水平布局:

实例

from PyQt5.QtWidgets import QHBoxLayout, QPushButton

h_layout = QHBoxLayout()
h_layout.addWidget(QPushButton('左'))
h_layout.addWidget(QPushButton('中'))
h_layout.addWidget(QPushButton('右'))

QVBoxLayout

垂直布局:

实例

from PyQt5.QtWidgets import QVBoxLayout, QPushButton

v_layout = QVBoxLayout()
v_layout.addWidget(QPushButton('上'))
v_layout.addWidget(QPushButton('中'))
v_layout.addWidget(QPushButton('下'))

QGridLayout

网格布局:

实例

from PyQt5.QtWidgets import QGridLayout, QPushButton

grid = QGridLayout()
grid.addWidget(QPushButton('(0,0)'), 0, 0)
grid.addWidget(QPushButton('(0,1)'), 0, 1)
grid.addWidget(QPushButton('(1,0)'), 1, 0)

高级组件

QTableWidget

表格组件:

实例

from PyQt5.QtWidgets import QTableWidget, QTableWidgetItem

table = QTableWidget(3, 3)  # 3行3列
table.setHorizontalHeaderLabels(['列1', '列2', '列3'])
table.setItem(0, 0, QTableWidgetItem('数据1'))

QTreeWidget

树形组件:

实例

from PyQt5.QtWidgets import QTreeWidget, QTreeWidgetItem

tree = QTreeWidget()
tree.setHeaderLabels(['名称', '值'])
root = QTreeWidgetItem(tree, ['根节点'])
child = QTreeWidgetItem(root, ['子节点', '123'])

QTabWidget

标签页组件:

实例

from PyQt5.QtWidgets import QTabWidget, QWidget

tab = QTabWidget()
tab.addTab(QWidget(), '标签1')
tab.addTab(QWidget(), '标签2')

对话框组件

QMessageBox

消息对话框:

实例

from PyQt5.QtWidgets import QMessageBox

msg = QMessageBox()
msg.setWindowTitle('提示')
msg.setText('这是一个消息对话框')
msg.setIcon(QMessageBox.Information)
msg.exec_()

QFileDialog

文件对话框:

实例

from PyQt5.QtWidgets import QFileDialog

file_name = QFileDialog.getOpenFileName(None, '选择文件', '', '文本文件 (*.txt);;所有文件 (*)')

样式设置

PyQt 支持使用 CSS 样式来美化组件:

实例

button = QPushButton('样式按钮')
button.setStyleSheet('''
    QPushButton {
        background-color: #4CAF50;
        border: none;
        color: white;
        padding: 10px 24px;
        text-align: center;
        font-size: 16px;
        margin: 4px 2px;
        border-radius: 8px;
    }
    QPushButton:hover {
        background-color: #45a049;
    }
'''
)