<br><div class="gmail_quote">On Thu, Jun 23, 2011 at 6:14 AM, Algis Kabaila <span dir="ltr"><<a href="mailto:akabaila@pcug.org.au">akabaila@pcug.org.au</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div><div></div><div class="h5">On Thu, 23 Jun 2011 08:17:04 AM Baz Walter wrote:<br>
> On 22/06/11 20:49, David Townshend wrote:<br>
> > On Wed, Jun 22, 2011 at 2:34 PM, Baz Walter<<a href="mailto:bazwal@ftml.net">bazwal@ftml.net</a>>  wrote:<br>
> >> according to the qt docs, only one application object should be created<br>
> >> at a time, and there is a global qApp pointer which refers to the<br>
> >> current instance.<br>
> >><br>
> >> this suggests that, in pyqt, something like the following should work:<br>
> >><br>
> >> from PyQt4 import QtGui<br>
> >> QtGui.qApp = app = QtGui.QApplication([])<br>
> >> app.quit()<br>
> >> QtGui.qApp = app = None<br>
><br>
> [snip]<br>
><br>
> > I've investigated further and found that its caused by the gtk style<br>
> > which I am using, since I am running gnome. Simply changing the qt style<br>
> > avoids the problem. I recall reading about similar issues before with<br>
> > the gtk-qt style, so I think that this is a know problem.  However, I<br>
> > noticed that after changing the style, python still segfaults on exit.<br>
> > gdb indicates that it is something in the QApplication destructor, and<br>
> > it seems that deleting the<br>
> ><br>
> > instance after quitting solves this, e.g.:<br>
> >>>> from PyQt4.QtGui import QApplication<br>
> ><br>
> >>>> for i in range(10):<br>
> > ...     app = QApplication([])<br>
> > ...     app.quit()<br>
> > ...     del app<br>
> > ...<br>
> ><br>
> >>>> exit()<br>
> ><br>
> > I experimented a bit with setting qApp = None, but it didn't make a<br>
> > difference.<br>
><br>
> my point was simply that you need to make sure you remove all references<br>
> to the current qpplication instance before creating a new one.<br>
><br>
> in general, setting qApp to the instance of qapplication isn't<br>
> necessary. but it's worth noting that qApp won't refer to the same<br>
> *pyqt* object unless it's explicitly over-written. this may become<br>
> relevant when working with subclasses of qapplication. of course, if you<br>
> don't use qApp, it won't make any difference, as you say ;-)<br>
<br>
</div></div>Baz,<br>
<br>
This does not explain why the IDLE quits so early in the test, even before CR<br>
is pressed... Actually, in python3.2 if one programs in IDLE, one finds that<br>
IDLE is useless with PyQt as it quits (just vanishes from the screen...) if<br>
one tries to run a script after modifying it.  Basically, IDLE works only if<br>
it is invoked from scratch each time one wants to run a program.<br>
<br>
I suggest that because of such misbehaviour it is not useful to look for<br>
faults in the test case - there is a fault, either in Python3 IDLE, Python 3,<br>
PyQt, Qt itself.<br>
<br>
As for the PyQt bug tracker - I was not able to find it, though I saw bug<br>
reports in several places, though I said earlier that I did see it somewhere.<br>
<br>
I would write it down to my aging memory....<br>
<br>
OldAl.<br>
<div><div></div><div class="h5">_______________________________________________<br>
PyQt mailing list    <a href="mailto:PyQt@riverbankcomputing.com">PyQt@riverbankcomputing.com</a><br>
<a href="http://www.riverbankcomputing.com/mailman/listinfo/pyqt" target="_blank">http://www.riverbankcomputing.com/mailman/listinfo/pyqt</a><br>
</div></div></blockquote></div><br><div>Baz - Sorry, I think I misunderstood you slightly, but I reached the same conclusion - to delete all references to the instance.  I don't think that omitting this should cause a segfault though, so it does look like a bug, but at least its easy to work around.</div>
<div><br></div><div>OldAl - I don't get that behaviour.  Is this is linux or windows, have you tried to get a backtrace to see where the problem is?  I have to admit I never use IDLE, I much prefer the console interface, so I haven't had much opportunity to see if this happens to me.</div>
<div><br></div><div>David</div>