PyQt5自定义鼠标按钮事件——有趣的小窗口程序

先看看成品
PyQt5自定义鼠标按钮事件——有趣的小窗口程序_第1张图片
有了这么一个程序,是不是就可以。。。

算了,我们来看核心代码

# 定义鼠标指向按钮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

你可能感兴趣的:(PyQt5,python)