The previous deleteLater on the QPropertyAnimation left a dangling self._fade_anim reference to a dead C++ object. When the next search called FlowLayout.clear(), calling .stop() on the dead animation threw RuntimeError and aborted widget cleanup, leaving stale thumbnails in the grid. Now the finished callback nulls self._fade_anim before scheduling deletion, so clear() never touches a dead object.