python库pyQt库常用组件及用法示例介绍

2024-05-02 11:44 python库pyQt库常用组件及用法示例介绍已关闭评论

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元,扫一扫支付后添加微信提供帮助!(如不能解决您的问题,可以申请退款)

你可能感兴趣的文章

来源:每日教程每日一例,深入学习实用技术教程,关注公众号TeachCourse
转载请注明出处: https://www.teachcourse.cn/3424.html ,谢谢支持!

资源分享

分类:python 标签:, ,
python对文件的操作 python对文件的操作
解决:启动Genymotion提示“Unable to load VirtualBox engine”的错误 解决:启动Genymotion提示“Un
Python实现提取文章关键字 Python实现提取文章关键字
Android学习笔记十二:Android基础知识 Android学习笔记十二:Android

评论已关闭!