信号与槽
对于可视化编程,需要将界面上的控件有机结合起来,实现控件功能的联动和交互操作。比如点击按钮,实现某项功能。对按钮功能的定义,是通过信号(signal)与槽(slot)机制实现的。信号与槽是PySide6编程的基础,也是Qt的一大创新,有了信号与槽的编程机制,在PySide6中处理界面上各个控件的交互操作时变得更加直观和简单。
信号:信号是指从QObject类继承的控件(窗口、按钮、文本框、列表框等)在某个动作下或状态发生改变时发出的一个指令或一个信息,例如一个按钮被单击(clicked)、右击一个窗口(customContextMenuRequested)、一个输入框中文字的改变(textChanged)等,当这些控件的状态发生变化或者外界对控件进行输入时,让这些控件发出一个信息,来通知系统其某种状态发生了变化或者得到了外界的输入,以便让系统对外界的输入进行响应。
槽:槽是系统对控件发出的信号进行的响应,或者产生的动作,通常用函数来定义系统的响应或动作,因此也叫做“槽函数”。例如对于单击“计算”按钮,按钮发出被单击的信号,然后编写对应的函数,当控件发出信号时,就会自动执行与信号关联的函数。
信号与槽的关系可以是一对一,也可以是多对多,即一个信号可以关联多个槽函数,一个槽函数也可以接收多个信号。PySide6已经为控件编写了一些信号和槽函数,使用前需要将信号和槽函数进行连接,另外用户还可以自定义信号和自定义槽函数。
内置信号与内置槽的连接
PySide6对控件已经定义的信号和槽可以在Qt Designer中查看。启动Qt Designer创建一个MainWindow.ui文件,在窗口上拖放一个新的Push Button按钮,并将objectName改成btnClose,将text设置成“关闭”。然后单击工具栏上的“编辑信号/槽”按钮,进入信号和槽的编辑界面,按住Shift键的同时,用鼠标左键拖拽“关闭”按钮到窗口的空白区,这时会出现一个红色线和接地符号,松开鼠标,弹出“配置连接”对话框。
勾选“显示从QWidget继承的信号和槽”,这时对话框的左边列表框中显示按钮的所有已定义信号,右边列表框中显示窗口所有的槽函数。这里左边选择按钮的clicked()信号,右边选择窗口的close()函数,单击OK按钮,就建立了按钮的单击信号(clicked)和窗口的关闭(close)的连接。
按ESC键退出信号/槽编辑状态。另外一种建立信号和槽的方法是使用“信号/槽编辑器”。在Qt Designer的右下角的“信号/槽编辑器”上单击+按钮,双击发送者下的<发送者>,找到btnClose按钮,双击信号下的<信号>,找到clicked(),双击接收者下的<接收者>,找到Form,双击槽下的<槽>,找到close(),这样就建立了信号和槽的连接。如果要删除信号和槽的连接,应先选中信号槽,然后单击-按钮。
将ui文件编译成py文件,打开生成的py文件,可以发现在py中增加了一行新代码self.btnClose.clicked.connect(Form.close),用控件信号的connect()方法将信号和函数进行了连接,注意被连接的槽函数不需要带括号。
self.signalName.connect(receiver.slotName)
添加一个main.py,添加如下代码,运行main.py:
from PySide6.QtWidgets import QApplication, QMainWindow
from Ui_MainWindow import Ui_MainWindow
import sys
class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.show()
app = QApplication(sys.argv)
w = MainWindow()
app.exec()
当pushButton被点击,窗口被关闭。
标签:控件,函数,单击,Pyqt6,Pyside6,详解,信号,按钮,MainWindow From: https://www.cnblogs.com/holychan/p/18188165