On 22/06/11 20:49, David Townshend wrote:
On Wed, Jun 22, 2011 at 2:34 PM, Baz Walter<baz...@ftml.net>  wrote:
according to the qt docs, only one application object should be created at
a time, and there is a global qApp pointer which refers to the current
instance.

this suggests that, in pyqt, something like the following should work:

from PyQt4 import QtGui
QtGui.qApp = app = QtGui.QApplication([])
app.quit()
QtGui.qApp = app = None
[snip]
I've investigated further and found that its caused by the gtk style which I
am using, since I am running gnome. Simply changing the qt style avoids the
problem. I recall reading about similar issues before with the gtk-qt style,
so I think that this is a know problem.  However, I noticed that after
changing the style, python still segfaults on exit.  gdb indicates that it
is something in the QApplication destructor, and it seems that deleting the
instance after quitting solves this, e.g.:

from PyQt4.QtGui import QApplication
for i in range(10):
...     app = QApplication([])
...     app.quit()
...     del app
...
exit()

I experimented a bit with setting qApp = None, but it didn't make a
difference.

my point was simply that you need to make sure you remove all references to the current qpplication instance before creating a new one.

in general, setting qApp to the instance of qapplication isn't necessary. but it's worth noting that qApp won't refer to the same *pyqt* object unless it's explicitly over-written. this may become relevant when working with subclasses of qapplication. of course, if you don't use qApp, it won't make any difference, as you say ;-)
_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt

Reply via email to