[PyQt] Cooperative multi-inheritance with QObject + QRunner

Barry Scott barry at barrys-emacs.org
Tue May 31 09:19:43 BST 2016


On Tuesday 31 May 2016 09:53:43 Elvis Stansvik wrote:
> Hi all,
> 
> I tried subclassing both QObject and QRunnable, like this:
> 
> class Job(QObject, QRunnable):
> 
>     finished = pyqtSignal()
> 
>     def __init__(self, *args, **kwargs):
>         super().__init__(*args, **kwargs)

super only call init for QObject()
you need to call __init__ for QRunnable.

> 
>     def run(self):
>         pass  # Do stuff
>         self.finished.emit()
> 
> But trying to run it on a QThreadPool with
> 
>     job = Job()
>     QThreadPool.globalInstance().start(job)
> 
> I get
> 
>     TypeError: could not convert 'Job' to 'QRunnable'
> 
> Is it impossible to leverage PyQt's support for cooperative
> multi-inheritance in this case?
> 
> I'd like the class to be a QObject, so that I can emit signals from
> it, but at the same time a QRunnable so that I can run it on a
> QThreadPool. AFAIK this is possible from C++, but looks like it won't
> work with PyQt?
> 
> Thanks in advance,
> Elvis
> _______________________________________________
> PyQt mailing list    PyQt at riverbankcomputing.com
> https://www.riverbankcomputing.com/mailman/listinfo/pyqt



More information about the PyQt mailing list