pyside6将信号与槽函数进行连接
在本文中,你将了解信号与槽的概念,掌握在Qt Designer中添加槽函数,以及在PySide6中的应用。
信号与槽
信号与槽是Qt中的一种事件处理机制;所谓的信号是,通俗点讲,就是窗口上各个控件发生的一些事件;比如当某个按钮被点击时,则产生一个信号,文本框中的内容被修改时也产生一个信号,窗口大小被调整时也能产生一个信号;
而槽就是处理这类信号的函数,也叫槽函数;我们可以通过将某个函数与产生的信号进行绑定,当这个信号产生时,槽函数将被调用;
绑定槽函数
self.pushButton.clicked.connect(sayHello)
def sayHello():
pass
在上面这段示例代码中,clicked
表示pushButton
被点击时的信号,connect
将函数sayHello
与信号进行连接,sayHello
就是槽函数;
在Qt Designer中的应用
在Qt Designer中,可通过按F4,或通过点击工具栏中的【编辑信号/槽】进入编辑信号/槽模式;
双击一个目标,并拖动线条到窗口;

这个过程实现了将pushButton
的clicked
信号与QWidget
对象(实际上是父类)的sayHello()
函数进行绑定;
发送者为pushButton
,信号为clicked
,接收者为QWidget
,槽函数为sayHello()
;
我们来看看将其转换成Python的代码:
class Ui_Form(object):
def setupUi(self, Form):
if not Form.objectName():
Form.setObjectName(u"Form")
pass#省略了一部分
self.pushButton.clicked.connect(Form.sayHello)#将sayHello()函数定义到调用setupUi()时传递的那个类上
pass
你需要将sayHello()
定义到调用setupUi()
时传递的那个类上,示例:
import sys
from PySide6 import QtWidgets,QtCore
import ui_xxxx # 创建UI的代码
class MyWidget(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.ui = ui_xxxx.Ui_Form()
self.ui.setupUi(self) #这里传递的是MyWidget
@QtCore.Slot()#修饰一下,表明这是个槽函数
def sayHello(self):
pass
在编辑信号与槽时,你可以尝试将线条拖动到另外一个控件上,比如文本框;

你会发现它能连接文本框控件中的一些函数,比如清空文本框函数clear()
,全选函数selectAll()
;
上图中,发送者为pushButton
,信号为clicked
,接收者为textEdit
,槽函数为clear()
;
转换成Python代码,它是这样的:
self.pushButton.clicked.connect(self.textEdit.clear)