【问题标题】:PySide Signal with Argument带参数的 PySide 信号
【发布时间】:2023-10-11 23:26:01
【问题描述】:

QGroupBox 有信号clicked,它有一个可选的checked 参数。假设我试图在某个类中将一个插槽连接到它,如下所示:box.clicked.connect(self.func),因此插槽的声明必须是def func(self, checked),但func 仅使用一个参数调用。如何使用 self 和可选的 checked 参数调用 func 的所需行为?

【问题讨论】:

    标签: python pyside signals-slots qgroupbox


    【解决方案1】:

    具有可选默认参数的信号的行为在 PyQt 和 PySide 之间有所不同。在 PyQt 中,默认参数是 always 发送的,但在 PySide 中你必须明确地请求它:

        box.clicked[bool].connect(self.func)
    

    我会说这是一个更好的设计选择,因为如果您忘记即使您没有要求它也会发送默认值,PyQt 行为通常会导致错误。显式优于隐式的情况......

    【讨论】: