[PyQt] Fwd: Mixin classes and PyQt4
Martin Teichmann
martin.teichmann at gmail.com
Thu Feb 13 18:54:42 GMT 2014
Hi Baz, Hi Phil, Hi List,
This actually only relates to multiple-inheritance. It should never be
> problem for true mixin classes.
>
There you're certainly right. It's calling super() where I have my
issues. Your examples did not call super(), so the MRO doesn't
matter.
> The one genuine issue with mixins in PyQt, is that you cannot inherit
> custom signals.
>
Then it might be interesting for you that with my patch applied, it
does work. For example:
-----------------------------------------------------------------------
from PyQt4.QtGui import QWidget, QLabel, QApplication
from PyQt4.QtCore import pyqtSignal, QObject
class A(QObject):
a = pyqtSignal(str)
class B(A, QLabel):
b = pyqtSignal(str)
class Printer(QObject):
def print(self, a):
print(a)
app = QApplication([])
b = B()
p = Printer()
b.a.connect(p.print)
b.b.connect(p.print)
b.a.emit('a')
b.b.emit('b')
b.setText('foo')
----------------------------------------------------------------------
correctly works with my patch applied. It does not if you let A
inherit from object.
I thought that this is because QObject has a special metaclass
which does something to the signals, but replacing the definition
of A with class A(object, metaclass=QObject.__class__)
interestingly did not help.
Btw, why is it called pyqtSignal and not just signal, for those
in need for details they could just write QtCore.signal
Greetings
Martin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20140213/c615c770/attachment.html>
More information about the PyQt
mailing list