Ich habe eine große Traits-Anwendung, die in die Grenzen der enthought Merkmale läuft. Hauptsächlich Leistungsprobleme bei Verwendung des @ on_traits_changed Dekorators. Es wäre ziemlich einfach, diese Fragen mit PyQt4 (oder PyQt5) Signalen zu umgehen, wenn ich tun könnte:Verwenden Sie HasTraits und PyQt-Signale in einer Klasse
from traits.api import *
from PyQt4 import QtCore
class Foo(HasTraits, QtCore.QObject):
pass
Fehler-Stack:
TypeError Traceback (most recent call last)
<ipython-input-3-ecdfa57492f7> in <module>()
2 from PyQt4 import QtCore
3
----> 4 class Foo(HasTraits, QtCore.QObject):
5 pass
C:\Python27\lib\site-packages\traits\has_traits.pyc in __new__(cls, class_name,
bases, class_dict)
427
428 # Finish building the class using the updated class dictionary:
--> 429 klass = type.__new__(cls, class_name, bases, class_dict)
430
431 # Fix up all self referential traits to refer to this class:
TypeError: Error when calling the metaclass bases
metaclass conflict: the metaclass of a derived class must be a (non-strict)
subclass of the metaclasses of all its bases
Aber aus allem, was ich weiß, das ist nicht möglich. Gibt es eine Umgehungsmöglichkeit?
EDIT: hinzugefügt Importe
EDIT2: hinzugefügt Fehler-Stack
Warum denkst du, dass es nicht möglich ist? Was hast du getestet? – ekhumoro
Ich habe den von mir geposteten Code getestet und es wird ein Fehler ausgegeben. Ich habe keine Lösung für dieses Problem gefunden, also frage ich jetzt hier. – HeinzKurt
@HeinzKurt. Warum müssen Sie die Mehrfachvererbung verwenden? Warum erstellen Sie nicht einfach eine interne Instanz von 'QObject' und delegieren Sie dazu? Haben Sie auch die neueste Version von PyQt5 getestet? – ekhumoro