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
)。谢谢!你说得对。插槽对象在新作用域中保存不好。我接受你的回答。