PyQt槽函数添加参数

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))

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyQt函数可以有多个输入参数,这些参数可以是任何Python对象。在连接信号和时,可以指定函数参数列表,以便在信号被触发时自动传递参数。 例如,假设我们有一个按钮,当它被点击时,需要将一些文本添加到一个文本框中。我们可以定义一个函数,它接收两个参数:按钮对象和文本框对象。 ```python from PyQt5.QtWidgets import QPushButton, QTextEdit, QWidget, QVBoxLayout, QApplication class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): btn = QPushButton('Add Text', self) btn.move(20, 20) btn.clicked.connect(self.addText) self.textEdit = QTextEdit(self) self.textEdit.move(20, 60) self.setGeometry(300, 300, 300, 200) self.setWindowTitle('PyQt5 Example') def addText(self, btn, textEdit): text = 'Hello World!' textEdit.append(text) if __name__ == '__main__': import sys app = QApplication(sys.argv) ex = Example() ex.show() sys.exit(app.exec_()) ``` 在上面的例子中,我们定义了一个按钮和一个文本框。当按钮被点击时,会触发addText()函数,并将按钮对象和文本框对象作为参数传递给它。在函数中,我们将一些文本添加到文本框中。 注意,连接信号和时,我们需要将按钮对象和文本框对象传递给函数。这可以通过使用lambda表达式来实现,例如: ```python btn.clicked.connect(lambda: self.addText(btn, self.textEdit)) ``` 这样,当按钮被点击时,会调用addText()函数,并将按钮对象和文本框对象作为参数传递给它。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值