PyQt6使用QEasingCurve设置动画缓动曲线报AttributeError如何解决
报错解决方案
你遇到的AttributeError: type object 'QEasingCurve' has no attribute 'InOutQuad'报错,通常由两个原因导致,对应解决方法如下:
原因1:导入路径错误
请确保你已经正确导入QEasingCurve类,根据你使用的Qt绑定版本,导入语句对应为:
- PyQt5 / PySide2 版本:
from PyQt5.QtCore import QEasingCurve, QPropertyAnimation # 若用模块化导入请确认QtCore指向正确的模块路径
- PyQt6 / PySide6 版本:
from PyQt6.QtCore import QEasingCurve, QPropertyAnimation
原因2:Qt6系列枚举访问规则调整
如果你使用的是PyQt6 / PySide6版本,Qt对枚举成员的访问规则做了严格限制,QEasingCurve的缓动曲线类型属于Type子枚举,不能直接通过QEasingCurve类访问,需要加上中间层Type:
你原代码中的对应行:
self.animation.setEasingCurve(QtCore.QEasingCurve.InOutQuad)
修改为:
self.animation.setEasingCurve(QtCore.QEasingCurve.Type.InOutQuad)
其余曲线枚举值对应修改即可,例如:
Linear改为QtCore.QEasingCurve.Type.LinearInQuad改为QtCore.QEasingCurve.Type.InQuadOutQuad改为QtCore.QEasingCurve.Type.OutQuad
快速验证方法
如果不确定当前环境支持的访问方式,可以运行以下代码打印可访问的成员,确认正确的调用路径:
print([attr for attr in dir(QtCore.QEasingCurve) if 'InOutQuad' in attr or 'Type' in attr])
内容的提问来源于stack exchange,提问作者Jack Zero
相关产品推荐
相关产品推荐

