问题
解释问题: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 参数名: 函数名(参数名) - 没有参数时,槽函数不需要写括号
()