2

我有一个信号,它只需要做一件事:如果发出,则为变量分配给定值。为此创建一个方法似乎很愚蠢,所以我在想:有没有办法做这样的事情:

self.myButton.clicked.connect(self.someVariable = None)
4

1 回答 1

2

使用 lambda:

self.myButton.clicked.connect(lambda : self.someVariable = None)

笔记:

  1. self在插槽调用时引用,因此您可能想要执行以下操作:

    self.myButton.clicked.connect(lambda self=self: self.someVariable = None)

  2. 一些小部件发送带有参数的信号,您必须将它们放入 lambda 定义中。

        self.myButton.clicked.connect(lambda checked=False, self=self: self.someVariable = None)

更新:

lambda 中不允许赋值,所以你必须使用真正的函数或类似的东西:

self.myButton.clicked.connect(lambda self=self: setattr(self, 'someVariable', None))
于 2012-07-26T14:21:17.950 回答