PyQT5 基础编程笔记
PyQt5 的基础按钮,文本框等使用记录
一、基础GUI介绍
在创建一个GUI后,使用PyGU转换为python代码后,可在py文件中看见,创建了一个QApplication 对象,和 QMainWindow对象
QApplication 对象及QMainWindow对象
QApplication 对象为整个GUI程序的入口、QMainWindow对象是GUI程序的主窗口。
app = QApplication(sys.argv)
MainWindow = QMainWindow() # 调用
二、基础按钮
1、QPushButton 类 按钮控件 1
QPushButton是PyQt5中最基础且广泛使用的按钮类型。它用于执行特定的命令或触发特定的事件。这种按钮支持文本、图像以及不同的样式,可以高度定制以适应不同的应用需求。QPushButton可以显示普通文本、HTML标记的文本或图标,还可以配置为显示一个菜单。
QPushButton的一个关键特性是它的信号与槽机制,这允许程序员定义按钮点击时执行的操作。通过连接按钮的点击(clicked)信号到适当的槽函数,可以实现当用户点击按钮时执行特定代码的功能。
创建标准按钮和响应点击事件:
要创建一个基本的QPushButton并响应点击事件,可以遵循以下步骤:
- 创建按钮实例:实例化一个QPushButton,可以在构造函数中指定按钮的文本。
- 设置按钮属性:可选地设置按钮的各种属性,如尺寸、图标等。
- 连接信号与槽:使用clicked信号连接到一个槽函数,以定义点击按钮时的行为。
- 添加到布局:将按钮添加到布局中,以便在窗口中显示。
按钮控件,按下则执行动作,Qt Designer中为Push Button
设置:
.setText(_translate(“MainWindow”, “开启相机”)),设置按钮上显示文本
.clicked.connect(self.camera_open) 将按钮链接到函数camera_open,按下按钮则执行函数camera_open的动作
self.opencamera.setText(_translate("MainWindow", "开启相机"))
self.opencamera.clicked.connect(self.camera_open)
2、QRadioButton的使用
工作原理和用途:
QRadioButton 在 PyQt5 中用于表示一组互斥的选项,即在多个选项中只能选择一个。这种类型的按钮通常用于设置选择、配置选项或任何需要用户在多个选项中做出单一选择的场景。
当一组QRadioButton放置在同一个父容器中时,它们自动成为一组互斥的按钮。一旦某个按钮被选中,同组内的其他按钮将自动取消选中。这种行为是通过内部的按钮组管理实现的,而无需额外的代码来控制这种互斥行为。
使用单选按钮表示互斥选项:
要在用户界面中使用QRadioButton来表示互斥的选项,可以按照以下步骤操作:
- 创建单选按钮:为每个选项创建一个QRadioButton实例。
- 添加到布局:将所有单选按钮添加到相同的布局中,这样它们就会自动形成一个互斥组。
- 连接信号与槽(可选):如果需要响应单选按钮的变化,可以将它们的clicked或toggled信号连接到槽函数
3、QToolButton的高级应用
高级特性介绍:
QToolButton 是 PyQt5 中的一个高级控件,通常用于工具栏中,提供了比普通按钮更丰富的功能。它可以显示一个图标、一个文本或二者结合,还支持各种样式和行为,例如弹出菜单或多种动作模式。QToolButton 特别适用于需要紧凑布局和快速访问特定功能的应用,如绘图程序、文本编辑器或任何工具栏重要的应用程序。
在工具栏中使用 QToolButton:
QToolButton 在工具栏中的使用是其最常见的场景。它可以被配置为显示图标,使得工具栏更加直观和易用。此外,QToolButton 还支持不同的动作模式,例如单击即触发一个操作,或者显示一个关联的下拉菜单以提供更多选项。
添加下拉菜单和动作:
QToolButton 可以配置一个下拉菜单,当用户点击按钮时,菜单会显示出来。菜单中的每一项都可以关联一个特定的动作(QAction),这些动作可以是触发特定功能的命令。
4、QLabel类
5、QMessageBox 类 弹出式对话框
QMessageBox是一种通用的弹出式对话框,用于显示消息,允许用户通过单击不同的标准按钮对消息进行反馈。每个标准按钮都有一个预定义的文本、角色和十六进制数。QMessageBox类提供了许多常用的弹出式对话框,如提示、警告、错误、询问、关于等对话框。
方法 | 描述 |
---|---|
information(QWidget parent,title,text,buttons,defaultButton) | 弹出消息对话框,参数解释:parent(指定的父窗口控件),title(对话框标题),text(对话框文本),buttons(多个标准按钮,默认设为OK按钮),defaultButton(默认选中的标准按钮,默认是第一个标准按钮) |
question(QWidget parent,title,text,buttons,defaultButton) | 弹出问答对话框 |
warning(QWidget parent,title,text,buttons,defaultButton) | 弹出警告对话框 |
critical(QWidget parent,title,text,buttons,defaultButton) | 弹出严重错误对话框 |
about(QWidget parent,title,text) | 弹出关于对话框 |
setTitle() | 设置标题 |
setText() | 设置消息正文 |
setIcon() | 设置弹出对话框的图片 |
1)QMessageBox的标准按钮类型 2
类型 | 描述 |
---|---|
QMessage.OK | 同意操作 |
QMessage.Cancel | 取消操作 |
QMessage.Yes | 同意操作 |
QMessage.No | 取消操作 |
QMessage.Abort | 终止操作 |
QMessage.Retry | 重试操作 |
QMessage.Ignore | 忽略操作 |
代码显示:
QMessageBox.information(self, "消息对话框", "相机开启", QMessageBox.Yes | QMessageBox.No,
QMessageBox.Yes)
示例:
建立一个QMessageBox对象
self.Openc = QtWidgets.QMessageBox(self.centralwidget)
self.Openc.setWindowTitle("消息对话框")
self.Openc.setText("相机开启")
self.Openc.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
**```
调用QMessageBox对象**
```python
self.Openc.exec_() # 弹出相机开启对话框
三、中途暂停正在进行的进程 3
设置暂停按钮,中断进行的循环
将我们要执行的时间变为线程而不是进程。
在建立的GUI中添加下面的代码,
其中self.on为需要改变为线程的函数,然后在代码中添加中断标志,例如:判断某个变量是否符合要求,符合则进行动作。
import threading
def a(self):
t = threading.Thread(target=self.on, name='t')
t.start()
def a(self):
t = threading.Thread(target=self.camera_open, name='t')
t.start()
def camera_open(self):
self.a = 1
i = 0
self.Openc.exec_() # 弹出相机开启对话框
while True:
if self.a == 1:
执行后续语句
else:
break
def close_c(self):
self.a = 0 改变标识符的数值,使得上个函数中的if语句不成立,跳出循环
self.closecamera.clicked.connect(self.close_c) # 按钮连接函数
self.opencamera.clicked.connect(self.camera_open) # 按钮连接函数
上述实现了使用另外的按钮,中断某个按钮的程序