[PyQt] Cooperative multi-inheritance with QObject + QRunner
Elvis Stansvik
elvstone at gmail.com
Tue May 31 09:24:35 BST 2016
2016-05-31 10:19 GMT+02:00 Barry Scott <barry at barrys-emacs.org>:
> 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.
Hm, I thought that with PyQt5, only a single call is required, since
PyQt classes now support cooperative multi-inheritance:
http://pyqt.sourceforge.net/Docs/PyQt5/pyqt4_differences.html#cooperative-multi-inheritance
Elvis
>
>>
>> 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