如何在PySide中使用self作为参数发出信号?

时间:2013-03-30 11:26:00

标签: python qt pyside

在PySide中,我想用类定义信号作为参数发出信号。 E.g:

class MyWidget(QtGui.QWidget):

    signal_widget_closed = QtCore.Signal(MyWidget)

    def close(self):
        super(MyWidget, self).close()
        self.signal_widget_closed.emit(self)

但是,第二行给出了NameError,因为此时MyWidget还不存在。 现在我通过发出像这样的QWidget来解决这个问题

    signal_widget_closed = QtCore.Signal(QtGui.QWidget)

但我更喜欢使用MyWidget作为类型的解决方案。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您不需要此参数。
在插槽中使用QObject::sender来找出发出信号的对象。

答案 1 :(得分:1)

可以在类定义之后定义信号

您的代码如下:

class MyWidget(QtGui.QWidget):
    def close(self):
        super(MyWidget, self).close()
        self.signal_widget_closed.emit(self)
MyWidget.signal_widget_closed = QtCore.Signal(MyWidget)