[PyQt] Cooperative multi-inheritance with QObject + QRunner

Elvis Stansvik elvstone at gmail.com
Tue May 31 08:53:43 BST 2016


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)

    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


More information about the PyQt mailing list