[PyQt] C++ and embedded python, how to share gui thread?

Michael Olberg michael.olberg at chalmers.se
Mon May 28 10:45:33 BST 2007


recap: I have python embedded in a C++ Qt application. Running non-gui
python scripts works fine, but using qt from within python hangs the
program. 

I have run my code through strace and it appears that the program hangs
of a futex call which never returns. I have to send a SIGKILL to make it
abort.

I also have to correct my previous statement concerning Ubuntu Feisty. I
get the same problem there as with Debian Etch, it was an old binary
that I could make to work on Feisty.

/Michael

On Fri, 2007-05-25 at 08:30 +0200, Michael Olberg wrote:
> Just a follow-up: on a recently installed Debian etch my old problem is
> back, i.e. a python script trying to open a Qt dialog hangs the C++ Qt
> application where python is embedded. 
> 
> The exactly same program works fine in Ubuntu feisty as reported
> earlier. The application was originally developed under Debian sarge,
> where it also worked, but I had to stick to a particular version of
> python-qt.
> 
> /Michael
> 
> On Thu, 2007-05-17 at 12:19 +0200, Michael Olberg wrote:
> > I have just installed Ubuntu Feisty on my laptop and everything appears to work 
> > fine again. So consider the problem solved for the moment ;-).
> > 
> > thanks for all advice I received,
> > Michael
> > 
> > Patrick Stinson wrote:
> > > there is only one QApplication. Even in apps where you are writing a
> > > graphical plugin that will be used in a native event loop, you have to
> > > manage one QApplication instance. So, if your C++ app created a
> > > QApplication then you don't have to worry about it just create the
> > > PyQt widgets at will. This will all work the best if the qt lib you
> > > are using is a shared library or dll, because you don't want to link
> > > it in twice; once with the C++ app and once with the PyQt4 module.
> > > 
> > > I Hope that helps a little. I have more info on how I did the same thing 
> > > here:
> > > 
> > > http://www.patrickkidd.com/pk/trac/wiki/EmbeddedPythonWidgets
> > > 
> > > On 5/16/07, Michael Olberg <michael.olberg at chalmers.se> wrote:
> > >> Dear all,
> > >>
> > >> I have a scientific application programmed in C++ with the Qt widget 
> > >> set. I have
> > >> embedded a Python interpreter to allow me to control the application via
> > >> scripts. I can even import the python-qt bindings in those scripts and 
> > >> create
> > >> graphical dialogs. So at present everything works(!) as expected.
> > >>
> > >> However, this works with an old setup of Debian sarge and the
> > >> python2.3-qt3_3.11-4_i386.deb package. A number of upgrades have 
> > >> happened since
> > >> then, with python, with qt, and even with Debian. With newer versions
> > >> non-graphical scripts still work, but any attempt to open Qt dialogs 
> > >> from the
> > >> embedded python interpreter hangs the application.
> > >>
> > >> It appears to me that this has to do with how later versions of the 
> > >> python-qt
> > >> package access the main Qt GUI thread, which in my case is already 
> > >> started by
> > >> the underlying C++ application.
> > >>
> > >> I wonder if this is documented somewhere, with an example on how to 
> > >> start the
> > >> python interpreter so that the C++ and python can share the same Qt 
> > >> GUI? I'd
> > >> very much like to upgrade my system without breaking this application, 
> > >> which I
> > >> use for daily work.
> > >>
> > >> any info appreciated,
> > >> Michael
> > >> _______________________________________________
> > >> PyQt mailing list    PyQt at riverbankcomputing.com
> > >> http://www.riverbankcomputing.com/mailman/listinfo/pyqt
> > >>
> > > 
> > > 
> > 



More information about the PyQt mailing list