gpt4 book ai didi

python - 如何显示/隐藏带有运动动画的子 QWidget?

转载 作者:行者123 更新时间:2023-11-28 16:51:17 25 4
gpt4 key购买 nike

我正在处理一个有两个 child 的应用程序。一个是用作工具栏的小部件,下面的第二个是用作仪表板的小部件,信息将在其上显示。后者可以通过前者上的按钮显示/隐藏。 Here's a screen-cast of the prototype .

现在我正在考虑做同样的事情,但在显示/隐藏下方小部件时使用运动动画。

简而言之:效果应该给人的印象是在切换仪表板时整个应用程序会逐渐上升或下降。

详细说明:我希望下方小部件的高度减小,直到减小到 0,然后完全隐藏。同样,再次显示小部件时它会缓慢增加。与此同时,应用程序的位置应该相应地改变,以便它停留在屏幕底部。

我该怎么做?我以前从未在 Qt 上做过动画。如果您没有答案,您是否知道可以引导我找到答案的优质教程。

注意:我正在使用 PyQt。

最佳答案

我想你可以通过使用 QPropertyAnimation 得到你想要的为您的小部件的几何属性设置动画。但恕我直言,这是窗口管理器的角色,可以做你想做的事。绕过它可能会让您有些头疼(但我可能错了)。

更好地阅读您的问题后,您似乎想使用自己的组件来触发隐藏/显示,因此 WM 应该不是问题。

作为开始,这里有一些代码可以让小部件最小化(假设 tbw 是您想要设置动画的小部件的一个实例):

formerGeometry = QtCore.QRect(tbw.geometry()) # storing previous geometry in order to be able to restore it later

hideAnimation = QtCore.QPropertyAnimation(tbw, "geometry")
hideAnimation.setDuration(2000) # chose the value that fits you
hideAnimation.setStartValue(formerGeometry)
#computing final geometry
endTopLeftCorner = QtCore.QPoint(tbw.pos() + QtCore.QPoint(0, tbw.height()))
finalGeometry = QtCore.QRect(endTopLeftCorner, QtCore.QSize(tbw.width(), 0))
hideAnimation.setEndValue(finalGeometry)

hideAnimation.start()

关于python - 如何显示/隐藏带有运动动画的子 QWidget?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7108715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com