算了,我们来看核心代码
# 定义鼠标指向按钮2的事件
def eventFilter(self, object, event):
if object == self.btn2:
if event.type() == QEvent.Enter:
self.doMove()
return QWidget.eventFilter(self, object, event)
当鼠标移动到按钮2,即“不同意”按钮上时,调用函数doMove
# 当鼠标移动到按钮2控件时的事件(动画)
def doMove(self):
global x ,y
if self.btn2.pos() == QPoint(200, 300):
self.anim = QPropertyAnimation(self.btn2, b"geometry")
self.anim.setDuration(200)
self.anim.setStartValue(QRect(200, 300, 70, 20))
x = random.randint(40, 460)
y = random.randint(30, 480)
self.anim.setEndValue(QRect(x, y, 50, 20))
self.anim.setEasingCurve(QEasingCurve.OutCubic)
self.anim.start()
elif self.btn2.pos() == QPoint(x, y):
self.anim = QPropertyAnimation(self.btn2, b"geometry")
self.anim.setDuration(200)
self.anim.setStartValue(QRect(x, y, 50, 20))
x = random.randint(40, 460)
y = random.randint(30, 480)
self.anim.setEndValue(QRect(x, y, 50, 20))
self.anim.setEasingCurve(QEasingCurve.OutCubic)
self.anim.start()
该函数就是定位按钮位置,再重新给按钮一个位置,是按钮移动到相应的位置上。这样“不同意”按钮就可以到处乱跑了。
完整代码:
链接:https://pan.baidu.com/s/1-DUc4udkjtvQwdMdfdl6aQ
提取码:h4va