PyQt5库提供了丰富的组件(控件)来构建图形用户界面。以下是一些常用的组件及其基本用法示例:
1. QLabel(标签)
用于显示文本或图像。
from PyQt5.QtWidgets import QLabel, QApplication, QWidget
app = QApplication([])
window = QWidget()
label = QLabel(window)
label.setText("Hello, PyQt!")
label.move(50, 50) # 设置标签位置
window.setWindowTitle("QLabel 示例")
window.setGeometry(100, 100, 400, 300)
window.show()
app.exec_()
2. QPushButton(按钮)
用于触发动作。
from PyQt5.QtWidgets import QPushButton, QApplication, QWidget
def on_button_clicked():
print("按钮被点击了!")
app = QApplication([])
window = QWidget()
button = QPushButton("点击我", window)
button.setToolTip("这是一个按钮")
button.move(50, 100)
button.clicked.connect(on_button_clicked) # 连接点击信号到槽函数
window.setWindowTitle("QPushButton 示例")
window.setGeometry(100, 100, 400, 300)
window.show()
app.exec_()
3. QLineEdit(单行文本输入框)
用于接收用户输入的文本。
from PyQt5.QtWidgets import QLineEdit, QApplication, QWidget
app = QApplication([])
window = QWidget()
lineEdit = QLineEdit(window)
lineEdit.move(50, 150)
lineEdit.setPlaceholderText("请输入文本...") # 设置占位符文本
window.setWindowTitle("QLineEdit 示例")
window.setGeometry(100, 100, 400, 300)
window.show()
app.exec_()
4. QTextEdit(多行文本编辑框)
用于输入和显示多行文本。
from PyQt5.QtWidgets import QTextEdit, QApplication, QWidget
app = QApplication([])
window = QWidget()
textEdit = QTextEdit(window)
textEdit.move(50, 200)
textEdit.setPlainText("这是一个多行文本编辑框。") # 设置初始文本
window.setWindowTitle("QTextEdit 示例")
window.setGeometry(100, 100, 400, 300)
window.show()
app.exec_()
5. QComboBox(下拉选择框)
用于提供选项让用户选择。
from PyQt5.QtWidgets import QComboBox, QApplication, QWidget
app = QApplication([])
window = QWidget()
comboBox = QComboBox(window)
comboBox.addItem("选项 1")
comboBox.addItem("选项 2")
comboBox.addItem("选项 3")
comboBox.move(50, 250)
window.setWindowTitle("QComboBox 示例")
window.setGeometry(100, 100, 400, 300)
window.show()
app.exec_()
6. QListWidget(列表框)
用于展示可选项目的列表。
from PyQt5.QtWidgets import QListWidget, QListWidgetItem, QApplication, QWidget
app = QApplication([])
window = QWidget()
listWidget = QListWidget(window)
listWidget.addItem(QListWidgetItem("项目 1"))
listWidget.addItem(QListWidgetItem("项目 2"))
listWidget.addItem(QListWidgetItem("项目 3"))
listWidget.move(50, 300)
window.setWindowTitle("QListWidget 示例")
window.setGeometry(100, 100, 400, 300)
window.show()
app.exec_()
7. QTableWidget(表格)
用于展示二维数据。
from PyQt5.QtWidgets import QTableWidget, QTableWidgetItem, QApplication, QWidget
app = QApplication([])
window = QWidget()
tableWidget = QTableWidget(window)
tableWidget.setRowCount(3)
tableWidget.setColumnCount(2)
tableWidget.setHorizontalHeaderLabels(["列 1", "列 2"])
tableWidget.setItem(0, 0, QTableWidgetItem("行 1 列 1"))
tableWidget.setItem(0, 1, QTableWidgetItem("行 1 列 2"))
tableWidget.setItem(1, 0, QTableWidgetItem("行 2 列 1"))
tableWidget.setItem(1, 1, QTableWidgetItem("行 2 列 2"))
tableWidget.move(50, 350)
window.setWindowTitle("QTableWidget 示例")
window.setGeometry(100, 100, 400, 300)
window.show()
app.exec_()
当然,除了之前介绍的组件之外,PyQt5还提供了许多其他功能丰富的组件来满足不同的用户界面需求。下面是一些额外的常用组件及其简要示例:
8. QSpinBox(数值输入框)
用于输入整数值,常用于年龄、数量等场景。
from PyQt5.QtWidgets import QSpinBox, QApplication, QWidget
app = QApplication([])
window = QWidget()
spinBox = QSpinBox(window)
spinBox.setMinimum(0) # 设置最小值
spinBox.setMaximum(100) # 设置最大值
spinBox.setValue(50) # 设置初始值
spinBox.move(50, 400)
window.setWindowTitle("QSpinBox 示例")
window.setGeometry(100, 100, 400, 400)
window.show()
app.exec_()
9. QDoubleSpinBox(浮点数输入框)
类似于QSpinBox,但用于输入浮点数。
from PyQt5.QtWidgets import QDoubleSpinBox, QApplication, QWidget
app = QApplication([])
window = QWidget()
doubleSpinBox = QDoubleSpinBox(window)
doubleSpinBox.setMinimum(0.0)
doubleSpinBox.setMaximum(100.0)
doubleSpinBox.setSingleStep(0.1) # 设置步长
doubleSpinBox.setValue(50.0)
doubleSpinBox.move(50, 450)
window.setWindowTitle("QDoubleSpinBox 示例")
window.setGeometry(100, 100, 400, 400)
window.show()
app.exec_()
10. QDateEdit(日期选择器)
用于选择日期。
from PyQt5.QtWidgets import QDateEdit, QApplication, QWidget
app = QApplication([])
window = QWidget()
dateEdit = QDateEdit(window)
dateEdit.setDate(QtCore.QDate.currentDate()) # 设置当前日期
dateEdit.move(50, 500)
window.setWindowTitle("QDateEdit 示例")
window.setGeometry(100, 100, 400, 400)
window.show()
app.exec_()
11. QTimeEdit(时间选择器)
用于选择时间。
from PyQt5.QtWidgets import QTimeEdit, QApplication, QWidget
app = QApplication([])
window = QWidget()
timeEdit = QTimeEdit(window)
timeEdit.setTime(QtCore.QTime.currentTime()) # 设置当前时间
timeEdit.move(50, 550)
window.setWindowTitle("QTimeEdit 示例")
window.setGeometry(100, 100, 400, 400)
window.show()
app.exec_()
12. QCheckBox(复选框)
用于表示二元状态,如真/假、是/否。
from PyQt5.QtWidgets import QCheckBox, QApplication, QWidget
app = QApplication([])
window = QWidget()
checkBox = QCheckBox("我同意", window)
checkBox.move(50, 600)
checkBox.stateChanged.connect(lambda: print("状态改变:", checkBox.isChecked()))
window.setWindowTitle("QCheckBox 示例")
window.setGeometry(100, 100, 400, 400)
window.show()
app.exec_()
13. QRadioButton(单选按钮)
用于在多个选项中选择一个。
from PyQt5.QtWidgets import QRadioButton, QApplication, QWidget
app = QApplication([])
window = QWidget()
radioButton1 = QRadioButton("选项 A", window)
radioButton2 = QRadioButton("选项 B", window)
radioButton1.move(50, 650)
radioButton2.move(50, 680)
window.setWindowTitle("QRadioButton 示例")
window.setGeometry(100, 100, 400, 400)
window.show()
app.exec_()
继续探索PyQt5中的其他重要组件,以下是更多组件及其用法示例:
14. QSlider(滑块)
用于选择一个连续范围内的值。
from PyQt5.QtWidgets import QSlider, QLabel, QApplication, QWidget
app = QApplication([])
window = QWidget()
slider = QSlider(Qt.Horizontal, window) # 水平滑块
slider.setRange(0, 100)
slider.setValue(50)
slider.valueChanged.connect(lambda value: print("滑块值:", value))
valueLabel = QLabel("当前值: 50", window)
slider.valueChanged.connect(lambda value: valueLabel.setText(f"当前值: {value}"))
slider.move(50, 700)
valueLabel.move(50, 730)
window.setWindowTitle("QSlider 示例")
window.setGeometry(100, 100, 400, 500)
window.show()
app.exec_()
15. QProgressBar(进度条)
显示任务完成的进度。
from PyQt5.QtWidgets import QProgressBar, QApplication, QWidget, QPushButton, QVBoxLayout
import time
app = QApplication([])
window = QWidget()
progressBar = QProgressBar(window)
progressBar.setMaximum(100)
def updateProgress():
for i in range(101):
progressBar.setValue(i)
time.sleep(0.05) # 实际应用中应避免在主线程中阻塞
progressBar.setValue(0)
startButton = QPushButton("开始", window)
startButton.clicked.connect(updateProgress)
layout = QVBoxLayout()
layout.addWidget(progressBar)
layout.addWidget(startButton)
window.setLayout(layout)
window.setWindowTitle("QProgressBar 示例")
window.setGeometry(100, 100, 400, 150)
window.show()
app.exec_()
16. QDial(拨号盘)
模拟旋钮,用于选择数值。
from PyQt5.QtWidgets import QDial, QApplication, QWidget, QLabel
app = QApplication([])
window = QWidget()
dial = QDial(window)
dial.setNotchesVisible(True) # 显示刻度
dial.valueChanged.connect(lambda value: print("当前值:", value))
valueLabel = QLabel("当前值: 0", window)
dial.valueChanged.connect(lambda value: valueLabel.setText(f"当前值: {value}"))
dial.move(50, 780)
valueLabel.move(50, 810)
window.setWindowTitle("QDial 示例")
window.setGeometry(100, 100, 400, 500)
window.show()
app.exec_()
17. QColorDialog(颜色选择对话框)
让用户选择颜色。
from PyQt5.QtWidgets import QColorDialog, QApplication, QWidget, QPushButton
app = QApplication([])
window = QWidget()
def chooseColor():
color = QColorDialog.getColor()
if color.isValid():
print("选择的颜色:", color.name())
colorButton = QPushButton("选择颜色", window)
colorButton.clicked.connect(chooseColor)
window.setWindowTitle("QColorDialog 示例")
window.setGeometry(100, 100, 400, 100)
window.show()
app.exec_()
18. QFontDialog(字体选择对话框)
让用户选择字体。
from PyQt5.QtWidgets import QFontDialog, QApplication, QWidget, QPushButton, QLabel
app = QApplication([])
window = QWidget()
label = QLabel("字体示例", window)
def chooseFont():
font, ok = QFontDialog.getFont()
if ok:
label.setFont(font)
fontButton = QPushButton("选择字体", window)
fontButton.clicked.connect(chooseFont)
layout = QVBoxLayout()
layout.addWidget(label)
layout.addWidget(fontButton)
window.setLayout(layout)
window.setWindowTitle("QFontDialog 示例")
window.setGeometry(100, 100, 400, 150)
window.show()
app.exec_()
当然,PyQt5库极其丰富,这里再介绍几个其他重要的组件及其基本用法示例:
19. QGroupBox(分组框)
用于将相关控件组织在一起,并可提供标题。
from PyQt5.QtWidgets import QApplication, QWidget, QGroupBox, QVBoxLayout, QLabel, QPushButton
app = QApplication([])
window = QWidget()
groupBox = QGroupBox("个人信息")
layout = QVBoxLayout()
nameLabel = QLabel("姓名:")
nameLineEdit = QLabel("张三")
ageLabel = QLabel("年龄:")
ageSpinBox = QSpinBox()
ageSpinBox.setRange(1, 100)
layout.addWidget(nameLabel)
layout.addWidget(nameLineEdit)
layout.addWidget(ageLabel)
layout.addWidget(ageSpinBox)
groupBox.setLayout(layout)
mainLayout = QVBoxLayout()
mainLayout.addWidget(groupBox)
window.setLayout(mainLayout)
window.setWindowTitle("QGroupBox 示例")
window.setGeometry(100, 100, 400, 300)
window.show()
app.exec_()
20. QStackedWidget(堆叠式窗口部件)
允许用户在多个页面之间切换。
from PyQt5.QtWidgets import QApplication, QWidget, QStackedWidget, QLabel, QPushButton
app = QApplication([])
window = QWidget()
stackedWidget = QStackedWidget()
page1 = QWidget()
label1 = QLabel("这是第一页", page1)
stackedWidget.addWidget(page1)
page2 = QWidget()
label2 = QLabel("这是第二页", page2)
stackedWidget.addWidget(page2)
button1 = QPushButton("转到第一页", window)
button1.clicked.connect(lambda: stackedWidget.setCurrentIndex(0))
button2 = QPushButton("转到第二页", window)
button2.clicked.connect(lambda: stackedWidget.setCurrentIndex(1))
layout = QVBoxLayout()
layout.addWidget(stackedWidget)
layout.addWidget(button1)
layout.addWidget(button2)
window.setLayout(layout)
window.setWindowTitle("QStackedWidget 示例")
window.setGeometry(100, 100, 400, 300)
window.show()
app.exec_()
21. QScrollArea(滚动区域)
当内容超出可视区域时,允许用户滚动查看。
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QScrollArea
app = QApplication([])
window = QWidget()
scrollArea = QScrollArea()
scrollArea.setWidgetResizable(True)
contentWidget = QWidget()
scrollArea.setWidget(contentWidget)
layout = QVBoxLayout(contentWidget)
for i in range(100):
label = QLabel(f"这是第{i}行")
layout.addWidget(label)
mainLayout = QVBoxLayout()
mainLayout.addWidget(scrollArea)
window.setLayout(mainLayout)
window.setWindowTitle("QScrollArea 示例")
window.setGeometry(100, 100, 400, 300)
window.show()
app.exec_()
22. QTreeWidget(树状视图)
用于展示具有层次结构的数据。
from PyQt5.QtWidgets import QApplication, QWidget, QTreeWidgetItem, QTreeWidget
app = QApplication([])
window = QWidget()
treeWidget = QTreeWidget()
treeWidget.setHeaderLabels(["类别", "描述"])
topLevelItem1 = QTreeWidgetItem(["电子产品"])
treeWidget.addTopLevelItem(topLevelItem1)
child1 = QTreeWidgetItem(["笔记本电脑"])
child1.addChild(QTreeWidgetItem(["MacBook Pro"]))
child1.addChild(QTreeWidgetItem(["Surface Laptop"]))
topLevelItem1.addChild(child1)
topLevelItem2 = QTreeWidgetItem(["衣物"])
treeWidget.addTopLevelItem(topLevelItem2)
child2 = QTreeWidgetItem(["T恤"])
child2.addChild(QTreeWidgetItem(["短袖"]))
child2.addChild(QTreeWidgetItem(["长袖"]))
topLevelItem2.addChild(child2)
mainLayout = QVBoxLayout()
mainLayout.addWidget(treeWidget)
window.setLayout(mainLayout)
window.setWindowTitle("QTreeWidget 示例")
window.setGeometry(100, 100, 400, 300)
window.show()
app.exec_()
这些示例覆盖了更多类型的界面元素,从组织信息的容器到复杂的导航和展示结构,PyQt5提供了全方位的工具来满足不同的UI设计需求。
当前文章价值6.8元,扫一扫支付后添加微信提供帮助!(如不能解决您的问题,可以申请退款)
评论已关闭!