python - 如何在 PySide 中发出以 self 作为参数的信号?

标签 python qt pyside

在 PySide 中,我想使用将信号定义为参数的类来发出信号。例如:

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 作为类型的解决方案。有什么想法吗?

最佳答案

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

您的代码如下所示:

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

关于python - 如何在 PySide 中发出以 self 作为参数的信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15717997/

相关文章:

c++ - Qt 自定义委托(delegate)

qt - 将QDomElement转换为QString/Container类

pyside - "Module use of python34.dll conflicts with this version of Python"

python - Python 中的递归关系

python - 内置非数据版本属性?

c++ - QtCreator : Failed to start program. 路径或权限错误?

python - Qt:QPushButton 被子进程阻塞

python - Ubuntu - 找不到适用于 python2 的 PySide 模块,但适用于 python3

android - 使用 buildozer 和 kivy 在 python 中制作 android 应用程序

python - 将 .lib 和 .h 文件转换为可在 Python 中使用的 DLL