Skip to content Skip to sidebar Skip to footer

Typeerror: Pyqt4.qtcore.qvariantanimation Represents A C++ Abstract Class And Cannot Be Instantiated

I have this PyQt5 snippet that I'm trying to convert into PyQt4. The PyQt5 version works great but when I try to convert into PyQt4, I get this error. I removed QtWidgets but I sti

Solution 1:

In Qt4 updateCurrentValue() is a pure virtual method that needs to be implemented, in the case of Qt5 it is changing to be only a virtual method, in the first case C++ forces to implement it but with the change of Qt5 it is no longer necessary, so the solution is implement that method:

# ...
class VariantAnimation(QtCore.QVariantAnimation):
    def updateCurrentValue(self, value):
        pass


class LineEdit(QtGui.QLineEdit):
    def __init__(self):
        super(LineEdit, self).__init__()
        self.textChanged.connect(self.start_animation)

        self.animation = VariantAnimation(
            startValue=QtGui.QColor(255, 127, 127),
            endValue=QtGui.QColor(255, 255, 255),
            duration=1000,
            valueChanged=self.on_color_change,
        )

    # ...

    @QtCore.pyqtSlot(QtCore.QVariant)
    @QtCore.pyqtSlot(QtGui.QColor)
    def on_color_change(self, color):
        if isinstance(color, QtCore.QVariant):
            color = QtGui.QColor(color)
        self.setStyleSheet("QLineEdit{background-color: %s}" % (color.name(),))
    # ...

Post a Comment for "Typeerror: Pyqt4.qtcore.qvariantanimation Represents A C++ Abstract Class And Cannot Be Instantiated"