Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyQt在使用类似pyObj.setupUi(父级)的链式调用后,会删除所有信号和插槽_Python_Qt_User Interface_Pyqt - Fatal编程技术网

Python PyQt在使用类似pyObj.setupUi(父级)的链式调用后,会删除所有信号和插槽

Python PyQt在使用类似pyObj.setupUi(父级)的链式调用后,会删除所有信号和插槽,python,qt,user-interface,pyqt,Python,Qt,User Interface,Pyqt,一旦我使用DummyWidget().setupUi(mainWin),所有信号(例如下面代码中的textChanged)都将被删除,printDummy函数将被禁用,但当我使用dw=DummyWidget()时,一切都将正常工作;dw.setupUi(主)。我没有看到Python语法的具体区别。有人能分享一些评论吗 class DummyWidget(object): def setupUi(self, parent=None): assert parent is no

一旦我使用
DummyWidget().setupUi(mainWin)
,所有信号(例如下面代码中的textChanged)都将被删除,printDummy函数将被禁用,但当我使用
dw=DummyWidget()时,一切都将正常工作;dw.setupUi(主)
。我没有看到Python语法的具体区别。有人能分享一些评论吗

class DummyWidget(object):
    def setupUi(self, parent=None):
        assert parent is not None
        self.parent = parent
        parent.resize(480, 320)
        self.DUMMY = QtGui.QLineEdit(parent)
        # parent.setCentralWidget(self.DUMMY)
        self.DUMMY.textChanged.connect(self.printDummy)
        QtGui.QApplication.processEvents()

    def printDummy(self):
        print "DUMMY IN CLASS"


if __name__ == "__main__":
    import sys

    def printDummy(*args):
        print "DUMMY"

    app = QtGui.QApplication(sys.argv)
    # mainWin = MainWindow()
    # edit = QtGui.QLineEdit()
    # edit.textChanged.connect(printDummy)
    # mainWin.setCentralWidget(edit)
    mainWin = QtGui.QDialog()
    # DummyWidget().setupUi(mainWin)
    dw = DummyWidget()
    dw.setupUi(mainWin)
    mainWin.show()
    # mainWin.open()
    sys.exit(app.exec_())

如果您不保留对
DummyWidget
实例的引用,它将被垃圾收集,因此您的插槽将不再存在


如果您使用
DummyWidget.setupUi(父项)
则无法存储引用(此行提供
setupUi
的返回值,即
None
)。

谢谢!你说得对。插槽对象在新作用域中保存不好。我接受你的回答。