pyQt5中单击、双击、拖动事件区分

一般在处理单击、双击、拖动事件时会遇到以下问题:

  • 双击时会产生两个额外的单击事件和两个释放事件
  • 拖动时会在拖动开始处产生一个单击事件,在拖动结束时产生一个释放事件

故采用signal作为事件类型的标志加以区分。此处采用释放时生效单击事件。

用定时器等待双击事件,在时间内如果没有判断得到双击事件即为单击事件

# 实例化功能按钮
class button1(QPushButton):
    def __init__(self, parent=None):
        super(button1, self).__init__(parent)
        self.setText("记事本")
        self.resize(100, 100)

        self.signal1 = 0        # 判断鼠标事件类型的标志
        self.mousepos1 = 0      # 用于拖动时的鼠标位置初始值
        self.timer = QTimer()
        self.timer.timeout.connect(self.timerout1)      # 定时器,初始化连接到timerout1函数

# 定义鼠标事件
    def mouseDoubleClickEvent(self, QMouseEvent):
        self.signal = 2
        self.close()

    def mouseMoveEvent(self, QMouseEvent):
# 定义窗口随鼠标移动方法1
        if QMouseEvent.buttons() == Qt.LeftButton:
            self.mousepos2 = QMouseEvent.screenPos()
            self.toposx = int(self.frameGeometry().x() + self.mousepos2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值