我有一个小部件,在它被销毁之后必须进行一些手动清理(停止某些线程)。然而由于某种原因,小部件的“被破坏”信号没有被触发。我做了这个小例子来证明问题。Widget的“已销毁”信号没有被触发(PyQT)
import sys
from PyQt4 import QtGui
class MyWidget(QtGui.QWidget):
def __init__(self, parent):
super(MyWidget, self).__init__(parent)
def doSomeDestruction():
print('Hello World!')
self.destroyed.connect(doSomeDestruction)
class MyWindow(QtGui.QMainWindow):
def __init__(self):
super(MyWindow, self).__init__()
self.widget = MyWidget(self)
app = QtGui.QApplication(sys.argv)
window = MyWindow()
window.show()
ret = app.exec_()
sys.exit(ret)
我希望它打印出“Hello World!”当主窗口关闭时。但是,它不打印任何东西。
您能否与我共享打印Hello World的代码?我试图根据你的指示编辑代码,但它仍然不起作用。 http://pastebin.com/ZCgteHu4 – Scintillo
这很奇怪。我的代码唯一的区别是,doSomeDestruction在两个类之间定义。但是现在我发现它有时也是有效的。还有['gc.collect'](http://docs.python.org/3.3/library/gc.html#gc.collect),但它没有效果。我希望我们/某人可以找到一种方法使其工作。 – TobiMarg
看到我更新的答案。我应该现在工作。 (不管在哪里定义了doSomeDestruction) – TobiMarg