[PyQt] Understanding PyQt Documentation

Chris O'Halloran cmoman at gmail.com
Fri Sep 20 10:50:25 BST 2013


Hello all,

This question will hopefully be trivial but I seem to have a mental block.

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!

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.

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.

But whenever I read the PyQt documentation the following is never clear to
me.

This is an example from.

http://pyqt.sourceforge.net/Docs/PyQt4/qpushbutton.html

Say I'm wanting to make a button.

<quote>
Method Documentation

....
QPushButton.__init__ (*self*, QString *text*, QWidget *parent* = None)

The *parent* argument, if not None, causes *self* to be owned by Qt instead
of PyQt.

Constructs a push button with the parent *parent* and the text *text*.

</quote>


<code>

from PyQt4 import QtGui

class Pluto(QtGui.QWidget):
    def __init__(self):
        super(Pluto, self).__init__()

        self.move(300,300)
        self.setWindowTitle("Size policy")

        self.initUI()

    def initUI(self):

        btn1 = QtGui.QPushButton("Button",self)
        btn1.setSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)

        btn2 = QtGui.QPushButton("Button2",self)

</code>


Now consider
QPushButton.__init__ (*self*, QString *text*, QWidget *parent* = None)

and

btn2 = QtGui.QPushButton("Button2",self)

Obviously "Button" is text and can be a QString and self refers to the a
QWidget

but I never quite figure out what parent=None means.

Is "QWidget parent=None" all part of one argument?

is parent a key word argument? Ie you can pass other parameter to parent
and not just 'None'.

Is as simple as *self *ie the QWidget is simply the parent of the
QPushButton so that when the QWidget is destroyed the QPushButton is too.

How would you write parent=None?

Would it be

btn2 = QtGui.QPushButton("Button2")

or is it

btn2 = QtGui.QPushButton("Button2", parent=None)

btn2 = QtGui.QPushButton("Button2", self, parent=None)

And, if I write my code

btn2 = QtGui.QPushButton("Button2",self)

and *self *is the* parent* argument, ie not None, then I then have no idea
what *self* being owned by Qt instead of PyQt actually means.

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.

Does this matter or have I interpreted this all incorrectly?

Thanks for your patience if you've read this far.

Cheers and regards,

Chris O'Halloran
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20130920/7cd17682/attachment.html>


More information about the PyQt mailing list