PyQt槽函数添加参数
这篇文章的前提是你得知道槽函数是啥,在这边我就不解释了,如果你是自定义信号,并且使用emit()方法进行发送的,那在emit里面就可以传入参数,这个懂得都懂,不懂得可以看一下这个大佬的文章link.他写的非常详细,如果你要是只是类似于对于按钮这方面传参不晓得,可以看我的
下面是不传参
import sys
from PyQt5.QtWidgets import QWidget, QApplication, QPushButton
class MainWindow(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.setWindowTitle("MainWindow Demo")
self.resize(800, 600)
button = QPushButton("close", self)
# 连接内置信号与自定义槽
button.clicked.connect(self.onClose)
# 自定义槽函数
def onClose(self):
self.close()
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
对比,如果需要传入参数,看下面的代码
import sys
from PyQt5.QtWidgets import QWidget, QApplication, QPushButton
class MainWindow(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.setWindowTitle("MainWindow Demo")
self.resize(800, 600)
parameter = "银行股真的垃圾,千万不要买"
button = QPushButton("close", self)
# 连接内置信号与自定义槽
button.clicked.connect(lambda: self.onClose(parameter))
# 自定义槽函数
def onClose(self, parameter):
print(parameter)
self.close()
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
所以,用lambda函数可以完美的解决这个问题
button.clicked.connect(lambda: self.onClose(parameter))