PyQt/动画/README.md
2018-10-30 23:59:00 +08:00

2 KiB
Raw Blame History

动画特效

使用QPropertyAnimation属性类动画支持的属性有限

1、窗口淡入淡出

  1. 使用QPropertyAnimation对窗口的windowOpacity透明度属性进行修改
  2. 窗口启动时开启透明度0-->1的动画
    1. 尝试先取消动画完成后关闭窗口的信号(使用同一个动画对象,在关闭窗口动画的时候连接了动画结束后关闭窗口的信号)
    2. 停止旧动画开启新动画
  3. 窗口关闭时开启透明度1-->0的动画
    1. 停止就动画
    2. 绑定动画完成后finished信号连接到close关闭窗口函数

截图

2、右键菜单动画

  1. 使用QPropertyAnimation对菜单控件的geometry属性进行修改
  2. 当菜单事件contextMenuEvent触发时调用动画启动,同时显示菜单

截图

3、按钮放大缩小动画

  1. 使用QPropertyAnimation对按钮的geometry属性进行修改
  2. 针对按钮在布局中或者没有在布局中两种情况,需要对主窗口的showEventresizeEvent两个事件进行重写,从而达到更新按钮的最新geometry
  3. 主动调用按钮的updatePos函数来更新geometry

比如:

def showEvent(self, event):
    super(TestWindow, self).showEvent(event)
    # 更新按钮的位置
    self.button1.updatePos()
    # 针对不在控件中的按钮
    self.button2.move(self.width() - self.button2.width() - 15,
                      self.height() - self.button2.height() - 10)
    self.button2.updatePos()

def resizeEvent(self, event):
    super(TestWindow, self).resizeEvent(event)
    # 更新按钮的位置
    self.button1.updatePos()
    # 针对不在控件中的按钮
    self.button2.move(self.width() - self.button2.width() - 15,
                      self.height() - self.button2.height() - 10)
    self.button2.updatePos()

截图