<div><div style="color: rgb(0, 0, 0); font-family: arial; font-size: 14px;"><br></div><div><div>Thanks very much !</div><div>so this </div><div>self.widget = QtGui.QWidget(self)</div><div>will cause exist crash ,right ?</div><div style="color: rgb(0, 0, 0); font-family: arial; font-size: 14px;"><br></div></div><div style="color: rgb(0, 0, 0); font-family: arial; font-size: 14px;"><br></div><div style="color: rgb(0, 0, 0); font-family: arial; font-size: 14px;"><br></div></div><!-- jy5ContentSuffix --><div>在2015年04月03 00时53分, "Baz Walter"<bazwal@ftml.net>写道:</div><blockquote id="isReplyContent" style="padding-left:1ex; margin: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid"><br>On 02/04/15 06:06, redstone-cold wrote:<br>> For<br>> self.widget = QtGui.QWidget(self)<br>> Which is responsible for destroy self.widget when application exist ?<br>><br><br>Both.<br><br>Like I said, there are two parts: a Python part and a Qt part.<br><br>Below is an example that should make it clear what is happening. If the <br>widget is given a parent, the C++ part will be deleted by Qt when the <br>main window closes. So if you try to call one of its Qt methods after <br>that, you will see an error like this:<br><br>     RuntimeError: wrapped C/C++ object of type QWidget has been deleted<br><br>But if the widget does not have a parent, the C++ part won't be <br>automatically deleted by Qt, and so there will be no error. In that <br>case, Python/PyQt will try to destroy the widget when the interpreter <br>exits (if sip.destroyonexit is True).<br><br><br>import sys<br>from PyQt4.QtCore import *<br>from PyQt4.QtGui import *<br><br>app = QApplication(sys.argv)<br><br>mw = QMainWindow()<br>mw.setAttribute(Qt.WA_DeleteOnClose)<br><br>widget = QWidget(mw)<br># widget = QWidget()<br>widget.setObjectName('widget')<br><br>mw.show()<br><br>app.exec_()<br><br>print(widget.objectName())<br><br></blockquote><br><br><span title="neteasefooter"><span id="netease_mail_footer"></span></span>