[PyQt] Parent child relationship: child survives parent

2013-07-12 Thread Volker Pilipp
I've got a little bit confused about ownership of objects in SIP  As
far as I understand, if ParentObject owns ChildObject, the destruction
of ChildObject is left to c++ i.e. the c++ destructor of ParentObject
is expected to destruct ChildObject.  This behaviour may result in a
seg fault if the python programmer does not make sure that ChildObject
goes out of scope before ParentObject does. Indeed, there are many
scenarios where this may happen accidentally.

That's what I would like to have:  The ChildObject keeps a reference
on ParentObject that is released during destruction of ChildObject,
where the Python destructor of ChildObject must  not  call the c++
destructor of the wrapped c++ instance (this is done during
destruction of ParentObject).
I am wondering if this behavior is possible to achieve in SIP.
___
PyQt mailing listPyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt


Re: [PyQt] Parent child relationship: child survives parent

2013-07-12 Thread Phil Thompson
On Fri, 12 Jul 2013 09:30:46 +0200, Volker Pilipp
volker.pil...@dectris.com wrote:
 I've got a little bit confused about ownership of objects in SIP  As
 far as I understand, if ParentObject owns ChildObject, the destruction
 of ChildObject is left to c++ i.e. the c++ destructor of ParentObject
 is expected to destruct ChildObject.  This behaviour may result in a
 seg fault if the python programmer does not make sure that ChildObject
 goes out of scope before ParentObject does. Indeed, there are many
 scenarios where this may happen accidentally.

If you are talking about QObject then you shouldn't get a segfault - you
should get a Python exception.

 That's what I would like to have:  The ChildObject keeps a reference
 on ParentObject that is released during destruction of ChildObject,
 where the Python destructor of ChildObject must  not  call the c++
 destructor of the wrapped c++ instance (this is done during
 destruction of ParentObject).

The Python destructor will not call the C++ destructor if the C++ instance
has a parent. If you think it does then provide a test case that
demonstrates it.

 I am wondering if this behavior is possible to achieve in SIP.

Phil
___
PyQt mailing listPyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt


Re: [PyQt] help a noob, Im a noob

2013-07-12 Thread Hazen Babcock


On Tue, 9 Jul 2013 15:00:25 -0600 (MDT), Brian McDonald wrote:


Just getting into programming in general. Loving python so far. I am
working on an application that will display database information on
screen. The idea is that some rows of database information will appear on
screen for 30 seconds, and then the next rows will appear. I think I have
made some pretty good headway getting the database connected and even
displaying data, but I am having a hell of a time getting the data to
refresh to a new query after 30 seconds. I feel like I must just be
calling the qtimer at the wrong point in the program. Or, perhaps I should
be using a while loop of some kind. Anyway, here is my code. Any help
would be sooo appreciated.


Just quickly glancing at the code, I notice that you start the timer after
the application has run. Have you tried starting the timer in your run()
method?

Also, you can't connect the timer signal in the way that you hope, you 
need to do something like:


(in timer)
self.newQuery = newQuery
self.timer.timeout.connect(self.createQuery)

(in createQuery)
self.query=QtSql.QSqlQuery(self.newQuery)

Or:
(in timer)
self.timer.timeout.connect(lambda: self.createQuery(newQuery))

-Hazen

___
PyQt mailing listPyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt


Re: [PyQt] help a noob, Im a noob (David Boddie)

2013-07-12 Thread Brian McDonald
David, 

Thank you so much. Your suggestion got me thinking the right way and now the 
program is working just as I want it to. To prove how much of a noob I am, I 
should tell you, now that it is working I could sit and watch the screen toggle 
between queries for hours! HA. Feels like a major achievement. Of course, I 
realize its not really at all, but boy it sure feels cool. 

Thanks, 

Brian 

- Original Message -

From: pyqt-requ...@riverbankcomputing.com 
To: pyqt@riverbankcomputing.com 
Sent: Friday, July 12, 2013 5:00:01 AM 
Subject: PyQt Digest, Vol 108, Issue 13 

Send PyQt mailing list submissions to 
pyqt@riverbankcomputing.com 

To subscribe or unsubscribe via the World Wide Web, visit 
http://www.riverbankcomputing.com/mailman/listinfo/pyqt 
or, via email, send a message with subject or body 'help' to 
pyqt-requ...@riverbankcomputing.com 

You can reach the person managing the list at 
pyqt-ow...@riverbankcomputing.com 

When replying, please edit your Subject line so it is more specific 
than Re: Contents of PyQt digest... 


Today's Topics: 

1. Re: help a noob, Im a noob (David Boddie) 
2. Parent child relationship: child survives parent (Volker Pilipp) 
3. Re: Parent child relationship: child survives parent 
(Phil Thompson) 


-- 

Message: 1 
Date: Thu, 11 Jul 2013 20:00:50 +0200 
From: David Boddie da...@boddie.org.uk 
To: pyqt@riverbankcomputing.com 
Subject: Re: [PyQt] help a noob, Im a noob 
Message-ID: 201307112000.51212.da...@boddie.org.uk 
Content-Type: Text/Plain; charset=iso-8859-1 

On Tue, 9 Jul 2013 15:00:25 -0600 (MDT), Brian McDonald wrote: 

 Just getting into programming in general. Loving python so far. I am 
 working on an application that will display database information on 
 screen. The idea is that some rows of database information will appear on 
 screen for 30 seconds, and then the next rows will appear. I think I have 
 made some pretty good headway getting the database connected and even 
 displaying data, but I am having a hell of a time getting the data to 
 refresh to a new query after 30 seconds. I feel like I must just be 
 calling the qtimer at the wrong point in the program. Or, perhaps I should 
 be using a while loop of some kind. Anyway, here is my code. Any help 
 would be sooo appreciated. 

Just quickly glancing at the code, I notice that you start the timer after 
the application has run. Have you tried starting the timer in your run() 
method? 

David 


-- 

Message: 2 
Date: Fri, 12 Jul 2013 09:30:46 +0200 
From: Volker Pilipp volker.pil...@dectris.com 
To: pyqt@riverbankcomputing.com 
Subject: [PyQt] Parent child relationship: child survives parent 
Message-ID: 
cahio_ywovsqyiq1x1tmewogog4pjm6179ycdelkgs0bxrj7...@mail.gmail.com 
Content-Type: text/plain; charset=ISO-8859-1 

I've got a little bit confused about ownership of objects in SIP As 
far as I understand, if ParentObject owns ChildObject, the destruction 
of ChildObject is left to c++ i.e. the c++ destructor of ParentObject 
is expected to destruct ChildObject. This behaviour may result in a 
seg fault if the python programmer does not make sure that ChildObject 
goes out of scope before ParentObject does. Indeed, there are many 
scenarios where this may happen accidentally. 

That's what I would like to have: The ChildObject keeps a reference 
on ParentObject that is released during destruction of ChildObject, 
where the Python destructor of ChildObject must not call the c++ 
destructor of the wrapped c++ instance (this is done during 
destruction of ParentObject). 
I am wondering if this behavior is possible to achieve in SIP. 


-- 

Message: 3 
Date: Fri, 12 Jul 2013 08:44:43 +0100 
From: Phil Thompson p...@riverbankcomputing.com 
To: Volker Pilipp volker.pil...@dectris.com 
Cc: pyqt@riverbankcomputing.com 
Subject: Re: [PyQt] Parent child relationship: child survives parent 
Message-ID: 84fc10803f95f9bd598555abed8b40f7@localhost 
Content-Type: text/plain; charset=UTF-8 

On Fri, 12 Jul 2013 09:30:46 +0200, Volker Pilipp 
volker.pil...@dectris.com wrote: 
 I've got a little bit confused about ownership of objects in SIP As 
 far as I understand, if ParentObject owns ChildObject, the destruction 
 of ChildObject is left to c++ i.e. the c++ destructor of ParentObject 
 is expected to destruct ChildObject. This behaviour may result in a 
 seg fault if the python programmer does not make sure that ChildObject 
 goes out of scope before ParentObject does. Indeed, there are many 
 scenarios where this may happen accidentally. 

If you are talking about QObject then you shouldn't get a segfault - you 
should get a Python exception. 

 That's what I would like to have: The ChildObject keeps a reference 
 on ParentObject that is released during destruction of ChildObject, 
 where the Python destructor of ChildObject must not call the c++ 
 destructor of the