A null program - what is it doing?

Dave Angel davea at ieee.org
Tue Jan 5 13:12:40 CET 2010


r0g wrote:
> Gib Bogle wrote:
>   
>> No doubt a dumb question from a noob:
>>
>> The following program (a cut down version of some test code) uses no
>> CPU, and does not terminate:
>>
>> import sys
>> from PyQt4.QtCore import *
>>
>> if __name__=="__main__":
>>     app = QCoreApplication(sys.argv)
>>     sys.exit(app.exec_())
>>
>> What is the program doing?  What is the correct way to terminate the
>> execution?
>>
>> Thanks in advance for educating me.
>>     
>
>
>
> I've never used QT but other graphical toolkits I have used all start
> their own "main loop" which is a loop that cycles round receiving,
> queuing and dispatching "events". You probably need to call the
> QCoreApplication's quit method to break out of this e.g.
>
> app.exit() or something similar, have a look at some complete PyQt4
> examples or google for PyQt4 mainloop.
>
>
> Roger.
>
>   
Likewise, I haven't used QT, but have used others.

Gib:

It looks like app.exec() is the mainloop for QT, and it won't terminate 
till it gets a terminate event.  That might be the user clicking the X 
in the corner, or it might be a special keystroke like Alt-F4.  Or it 
might be some other event for which your event handler makes an explicit 
call to terminate.  Once one of these things happens, the app.exec() 
will return, and the sys.exit() will execute.

DaveA




More information about the Python-list mailing list