Hi
This answer may be a little help but I hope it helps someone nevertheless.
In ImageWidget.loadImage, you create anim as a local variable. That means it's going to be garbage collected at the end of th call : as soon as the call is over, the animation is deleted, and won't have any effect.
There is two ways to solve the problem :
Define anim as an object attribute (@self.anim = …@)
Set anim as a child of the current object, so that it keeps a reference to anim and prevent the garbage collection (@anim = QtCore.QPropertyAnimation(pixmap, "opacity", self)@)