[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