Phil Thompson wrote: > On Wednesday 22 November 2006 2:06 pm, anders wrote: > > Phil Thompson wrote: > > > On Wednesday 22 November 2006 12:37 pm, anders wrote: > > > > I am writing a plugin for a piece of software in python, and I want to > > > > start up a PyQt GUI in the plugin, without stalling the main thread > > > > while the gui is running (later i will want to pass messages between > > > > the main thread and the gui thread). > > > > > > > > I'm new to pyqt, so I'm probably doing something very silly, but for > > > > the moment I'm just trying to get the first pyqt tutorial example > > > > running in a seperate thread: > > > > > > > > ----8<-------- > > > > > > > > import sys > > > > from PyQt4 import QtGui > > > > from PyQt4 import QtCore > > > > > > > > class MyThread( QtCore.QThread ): > > > > def __init__( self ): > > > > QtCore.QThread.__init__( self ) > > > > > > > > def run( self ): > > > > app = QtGui.QApplication( sys.argv ) > > > > hello = QtGui.QPushButton( 'Hello world!' ) > > > > hello.resize( 500, 500 ) > > > > hello.show() > > > > app.exec_() > > > > QtCore.QThread.terminate( ) > > > > > > > > > > > > > > > > mt = MyThread() > > > > mt.start() > > > > print 'Main thread continuing...' > > > > mt.wait() > > > > print 'GUI thread finished.' > > > > > > > > ----8<-------- > > > > > > > > The app starts up (with a warning WARNING: QApplication was not created > > > > in the main() thread. ). I get a window, but no button, and clicking on > > > > the close button does nothing and I have to force the program to quit. > > > > > > > > There's got to be a way to get this working, right? Can anyone help me > > > > along the right path? > > > > > > Read http://doc.trolltech.com/4.2/threads.html > > > > > > In particular the bit that says that exec_() must be called from the main > > > thread and not from a QThread. > > > > > > Phil > > > > OK so that's all good... so how do I go about doing what I want then? > > Can I set up a window in the second thread and start its event loop > > without running the event loop in the core app? > > No. Read the second sentence of the paragraph I referred to. Also read the > section "QObject Reentrancy". > > Phil
OK I see that now. Thanks for pointing that out. So basically, I can't do what I want at all. That's a bit of a pain. Is there no way of tricking Qt into thinking I'm running it in the main thread? A -- http://mail.python.org/mailman/listinfo/python-list