问题
交代一下问题:PyQt5 如何进行信号和槽函数的连接,执行相应的功能?
解决办法
1. 装饰器方法:@pyqtSlot()
装饰器
from PyQt5.QtCore import pyqtSlot
# 信号与槽函数
@pyqtSlot()
def on_pushButton_clicked(self):
print('点击了按钮')
规则:
- @pyqtSlot():修饰关键词,表明下面是完整的信号槽函数
- 函数名称的特殊要求:
on_控件对象名_信号名(self, 内置参数)
-
同一个控件
同时要写多个信号与槽函数
时,只需要写一遍@pyqtSlot()
关键词,中间可以有其他函数隔开
# 同一个控件:lineEdit_2(控件对象名)
@pyqtSlot()
def on_lineEdit_2_returnPressed(self):
print('触发了信号 returnPressed')
def on_lineEdit_2_textChanged(self):
print('触发了信号 textChanged')
2. connect连接法
直接使用示例:
# 在初始化函数中信号连接
self.pushButton.clicked.connect(self.A)
# 槽函数
def A(self):
print('点击了按钮')
规则:
- 语法规则:
self.控件对象名称.信号名称.connect(self.槽函数名称)
- 有参数时,
槽函数名称
部分写成lambda 参数名: 函数名(参数名)
- 没有参数时,槽函数不用写括号
()