1、PyQt中信号的定义
from PyQt5.QtCore import Qt, pyqtSignal // 引入模块
class TestSignal(QWidget):
# 创建自定义信号,只能定义成类变量#
mySignal_1 = pyqtSignal() # 创建信号,用于发送按钮已点击信号;
mySignal_2 = pyqtSignal([str]) # 用于发送默认文件打开路径信号;信号有一个str类型的参数
如上所示,首先引入对应的模块pyqtSignal,然后在定义的类中定义信号。需要注意的是,信号只能定义成类变量,而不能定义成对象变量,最直观的就是在定义信号时,没有self.。
2、PyQt中槽函数的定义
槽函数的定义就是普通的函数定义,但是需要注意的是,如果槽函数对应的信号有参数,那么槽函数也要有对应的参数,可以参考如下:
def Slot_mySignal_1(self): // 对应的信号无参
// do something
def Slot_mySignal_2(self, str): // 对应的信号有[str]类型的参数
str1 = str
// do something
3、关联信号/槽函数
信号与槽函数的关联与QT中类似,都是用connect函数,但是用法又与QT中不同,在PyQt中的用法如下:
Test.mySignal_1.connect(self.Slot_mySignal_1)
Test.mySignal_2.connect(self.Slot_mySignal_2)
4、发送信号
信号的发送:
# 无参数
TestSignal.mySignal_1.emit()
# 有参数
TestSignal.mySignal_2.emit(str)
5、示例
示例如下:
from PyQt5.QtCore import Qt, pyqtSignal // 引入模块
class TestSignal(QWidget):
# 创建自定义信号,只能定义成类变量#
mySignal_1 = pyqtSignal() # 创建信号,用于发送按钮已点击信号;
mySignal_2 = pyqtSignal([str]) # 用于发送默认文件打开路径信号;信号有一个str类型的参数
def __init__(self): // 初始化函数
Test.mySignal_1.connect(self.Slot_mySignal_1)
Test.mySignal_2.connect(self.Slot_mySignal_2)
def Slot_mySignal_1(self): // 对应的信号无参
// do something
def Slot_mySignal_2(self, str): // 对应的信号有[str]类型的参数
str1 = str
// do something
def Send_signal(self):
str1 = 'test'
self.mySignal_1.emit()
self.mySignal_2.emit(str1)