On Thu, 7 Jan 2010 15:07:10 -0800 (PST), h0uk <vardan.pogos...@gmail.com>
wrote:

...

> Phil you right about app.exec_(). But situation is sligthly different.
> 
> I want to have more than one Job. I add these Jobs into QThreadPool
> trough cycle. And I also want these Jobs to run  sequentially.
> 
> The following code illustrate what I mean:
> 
> #!/usr/bin/env python
> # -*- coding: utf-8 -*-
> 
> import sys
> import os
> import time
> 
> from PyQt4 import QtCore, QtGui
> 
> class Job(QtCore.QRunnable):
>       def __init__(self, name):
>               QtCore.QRunnable.__init__(self)
>               self._name = name
> 
>       def run(self):
>               time.sleep(3)
>               print self._name
> 
> 
> if __name__ == "__main__":
> 
>       app = QtGui.QApplication(sys.argv)
> 
>       QtCore.QThreadPool.globalInstance().setMaxThreadCount(1)
> 
>       for i in range(5):
>               j = Job("Job-" + str(i))
>               j.setAutoDelete(True)
>               QtCore.QThreadPool.globalInstance().start(j, i)
>       app.exec_()
> 
> After 5 cycle I get the same error:  An unhandled win32 exception
> occured in python.exe.
> 
> How I can do it?? To run my Jobs sequentially???

It's a PyQt bug. The workaround is not to use setAutoDelete() and instead
keep an explicit reference to your Job instances - for example in a list of
jobs.

Phil
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to