[prev in list] [next in list] [prev in thread] [next in thread]
List: pykde
Subject: Re: [PyQt] Cooperative multi-inheritance with QObject + QRunner
From: Elvis Stansvik <elvstone () gmail ! com>
Date: 2016-05-31 11:20:21
Message-ID: CAHms=eYeZ2x70aq60VBFztMUP4nmOGcSWnbyMxFMV37q5fhHEA () mail ! gmail ! com
[Download RAW message or body]
[Attachment #2 (multipart/alternative)]
Den 31 maj 2016 11:01 fm skrev "Phil Thompson" <phil@riverbankcomputing.com
>:
>
> On 31 May 2016, at 8:53 am, Elvis Stansvik <elvstone@gmail.com> 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)
> >
> > 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?
>
> Correct - the usual restrictions on multiple inheritance of C++ classes.
Alright, thanks.
In the end I've reworked the code so I don't even need the threading, but
good to know.
Elvis
>
> Phil
[Attachment #5 (text/html)]
<p dir="ltr"><br>
Den 31 maj 2016 11:01 fm skrev "Phil Thompson" <<a \
href="mailto:phil@riverbankcomputing.com">phil@riverbankcomputing.com</a>>:<br> \
><br> > On 31 May 2016, at 8:53 am, Elvis Stansvik <<a \
href="mailto:elvstone@gmail.com">elvstone@gmail.com</a>> wrote:<br> > ><br>
> > Hi all,<br>
> ><br>
> > I tried subclassing both QObject and QRunnable, like this:<br>
> ><br>
> > class Job(QObject, QRunnable):<br>
> ><br>
> > finished = pyqtSignal()<br>
> ><br>
> > def __init__(self, *args, **kwargs):<br>
> > super().__init__(*args, **kwargs)<br>
> ><br>
> > def run(self):<br>
> > pass # Do stuff<br>
> > self.finished.emit()<br>
> ><br>
> > But trying to run it on a QThreadPool with<br>
> ><br>
> > job = Job()<br>
> > QThreadPool.globalInstance().start(job)<br>
> ><br>
> > I get<br>
> ><br>
> > TypeError: could not convert 'Job' to 'QRunnable'<br>
> ><br>
> > Is it impossible to leverage PyQt's support for cooperative<br>
> > multi-inheritance in this case?<br>
> ><br>
> > I'd like the class to be a QObject, so that I can emit signals from<br>
> > it, but at the same time a QRunnable so that I can run it on a<br>
> > QThreadPool. AFAIK this is possible from C++, but looks like it \
won't<br> > > work with PyQt?<br>
><br>
> Correct - the usual restrictions on multiple inheritance of C++ classes.</p>
<p dir="ltr">Alright, thanks.</p>
<p dir="ltr">In the end I've reworked the code so I don't even need the \
threading, but good to know.</p> <p dir="ltr">Elvis</p>
<p dir="ltr">><br>
> Phil<br>
</p>
[Attachment #6 (text/plain)]
_______________________________________________
PyQt mailing list PyQt@riverbankcomputing.com
https://www.riverbankcomputing.com/mailman/listinfo/pyqt
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic