<div dir="ltr"><div><div><div><div><div><div><div>Hello all,<br><br></div>This question will hopefully be trivial but I seem to have a mental block.<br><br></div>I'm currently working through Jan Bodnar's Advanced PyQt tutorial and Mark Summerfield's Rapid Gui Application Development with Python and PyQt. Both paid for copies. Thanks guys if you're on this list!<br>
<br></div>I'm a novice programmer but am making reasonable progress and have worked out how to embed Matplotlib graphs within PyQt windows and use dials and sliders to manipulate the maths in the graphs. Largely through copy and modifying others code.<br>
<br></div>I'm now starting to explore the toolkit beyond the tutorials - although I haven't finished either of the works mentioned in the previous paragraph.<br><br></div>But whenever I read the PyQt documentation the following is never clear to me.<br>
<br></div>This is an example from.<br><br><a href="http://pyqt.sourceforge.net/Docs/PyQt4/qpushbutton.html">http://pyqt.sourceforge.net/Docs/PyQt4/qpushbutton.html</a><br><br></div>Say I'm wanting to make a button.<br>
<div><div><br><quote><br><h2>Method Documentation</h2><p>....<br></p><h3 class=""><a name="QPushButton-2">QPushButton.__init__ (<i>self</i>, QString <i>text</i>, </a><a>QWidget</a> <i>parent</i> = None)</h3><p>The <i>parent</i> argument, if not None, causes <i>self</i> to be owned by Qt instead of PyQt.</p>
<p>Constructs a push button with the parent <i>parent</i> and the
text <i>text</i>.</p><p></quote><br></p><p><br></p><p><code></p><p></p><p>from PyQt4 import QtGui<br><br>class Pluto(QtGui.QWidget):<br>    def __init__(self):<br>        super(Pluto, self).__init__()<br>        <br>
        self.move(300,300)<br>        self.setWindowTitle("Size policy")<br>        <br>        self.initUI()<br>        <br>    def initUI(self):<br>        <br>        btn1 = QtGui.QPushButton("Button",self)<br>
        btn1.setSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)<br>        <br>        btn2 = QtGui.QPushButton("Button2",self)<br>        <br></p></code><p><br></p><p>Now consider</p><h3 class="">
<a name="QPushButton-2">QPushButton.__init__ (<i>self</i>, QString <i>text</i>, </a><a>QWidget</a> <i>parent</i> = None)</h3><p>and</p><p></p><p>btn2 = QtGui.QPushButton("Button2",self)</p><p>Obviously "Button" is text and can be a QString and self refers to the a QWidget</p>
<p>but I never quite figure out what parent=None means.</p><p>Is "QWidget parent=None" all part of one argument?<br></p><p>is parent a key word argument? Ie you can pass other parameter to parent and not just 'None'.<br>
</p><p>Is as simple as <b>self </b>ie the QWidget is simply the parent of the QPushButton so that when the QWidget is destroyed the QPushButton is too.<br></p><p>How would you write parent=None?</p><p>Would it be</p><p>btn2 = QtGui.QPushButton("Button2") <br>
</p><p>or is it</p><p>btn2 = QtGui.QPushButton("Button2", parent=None) </p><p>btn2 = QtGui.QPushButton("Button2", self, parent=None) </p><p>And, if I write my code</p><p>btn2 = QtGui.QPushButton("Button2",self)</p>
<p>and <b>self </b>is the<b> parent</b> argument, ie not None, then I then have no idea what <b>self</b> being owned by Qt instead of PyQt actually means.</p><p>Given that my code is bog standard, it seems a little odd that tricky things are happening with my object being owned by Qt instead of PyQt.<br>
</p><p></p><p>Does this matter or have I interpreted this all incorrectly?</p><p>Thanks for your patience if you've read this far.</p><p>Cheers and regards,</p><p>Chris O'Halloran<br></p><p><br></p><p><br></p><p><br>
</p><p><br></p><br></div></div></div>