PyQt5 QPropertyAnimation finished() 如何连接

Posted

技术标签:

【中文标题】PyQt5 QPropertyAnimation finished() 如何连接【英文标题】:PyQt5 QPropertyAnimation finished() how to connect 【发布时间】:2018-06-01 09:25:13 【问题描述】:

本质上,我试图在动画完成后关闭一个窗口。 在我看过的所有文档和示例中,它们都位于:

C++ 模糊的“方法定义” 老式插槽和连接器

我如何访问在动画结束时被“假定”调用的finished()?

self.anim = QtCore.QPropertyAnimation(window, b"windowOpacity"
self.anim.setStartValue(1)
self.anim.setEndValue(0)
self.anim.setDuration(3000)
#self.anim.finished.connect() does not exist
#QtCore.QObject.connect(stuff) is deprecated
#self.anim.finished(window.destroy) destroys window immediately

在我阅读的所有示例中,它们使用第一个注释掉的方法,但编译器抱怨“完成”没有“连接()”方法

【问题讨论】:

【参考方案1】:

每次都... 每一个。时间。 我找了好几个小时的答案,在发帖寻求帮助后,我立即找到了答案。

注释掉的方法 #1 是正确的,但是您不能在 connect() 方法中执行特定操作,例如 window.destroy 或其他东西。

正确方法:`

    self.anim.finished.connect(self.someMethod)
def someMethod(self):
    window.destroy

让我失望的是; IDE 没有为 finished.connect() 提供代码完成建议(实际上与 button.clicked.connect() 相同)

我想这就是我过度依赖 IDE 的结果。希望这对将来的某人有所帮助。

【讨论】:

以上是关于PyQt5 QPropertyAnimation finished() 如何连接的主要内容,如果未能解决你的问题,请参考以下文章

Qt 动画之QPropertyAnimation

QPainter 在使用 QPropertyAnimation 时崩溃

运行 QPropertyAnimation 后 QWiget 的奇怪行为

QPropertyAnimation 支持哪些属性进行动画处理?

qt:如何使用 QPropertyAnimation 为子 QPushButton 的透明度设置动画?

QT的QPropertyAnimation讲解