[PyQt] Fwd: Mixin classes and PyQt4

Baz Walter bazwal at ftml.net
Wed Feb 12 21:55:12 GMT 2014

On 12/02/14 09:35, Martin Teichmann wrote:
> Hi Phil, Hi Baz, Hi List,
> I just wrote a patch as advertised earlier, which checks that the
> inheritance is correct and that noone attempts to inherit from more
> than one PyQt base class. It is based on the patch sent earlier.
> Maybe this is an improvement enough to put my patches in?

This actually only relates to multiple-inheritance. It should never be 
problem for true mixin classes.

The one genuine issue with mixins in PyQt, is that you cannot inherit 
custom signals.

In PySide, I can do this:

 >>> from PySide import QtCore, QtGui
 >>> app = QtGui.QApplication([])
 >>> class A(object):
...     sig = QtCore.Signal(int)
 >>> class B(A, QtGui.QLabel):
...     def __init__(self):
...         super(B, self).__init__()
...         self.sig.connect(self.bar)
...     def foo(self): self.sig.emit(42)
...     def bar(self, i): print(i)
 >>> b = B()
 >>> b.foo()

I understand that Qt itself doesn't allow this, but is there a technical 
reason why this is not possible in PyQt? There is a real, practical need 
for this functionality (code reuse), and its galling that PySide allows 
it but PyQt doesn't.

Baz Walter

More information about the PyQt mailing list