【Python】【Day5】图像管理系统笔记_图形交互界面_PyQt5【5】【鼠标操作】

设置鼠标样式

  • 用法
控件.setCursor(鼠标样式枚举量)
  • 定义
class QCursor(__sip.simplewrapper):
    """
    QCursor()
    QCursor(QBitmap, QBitmap, hotX: int = -1, hotY: int = -1)
    QCursor(QPixmap, hotX: int = -1, hotY: int = -1)
    QCursor(Union[QCursor, Qt.CursorShape])
    QCursor(Any)
    """
    ...

参数:

  1. 光标类型,可为内置常量,也可为图片等等;
  2. 触发坐标,默认为 (-1 ,-1)在光标的中心

  • 自定义光标代码
import sys
from PyQt5.Qt import *

app = QApplication(sys.argv)

window = QWidget()
window.setWindowTitle("鼠标操作")
window.resize(500, 500)
window.move(400, 200)

pixmap = QPixmap("Christmas_Tree.png")  # 从图片创建自定义鼠标对象

cursor = QCursor(pixmap.scaled(50, 50), 0, 0)  # scaled()对鼠标对象进行缩放,并设置触发点为0,0(默认为-1,-1,在鼠标光标对象的中心)
window.setCursor(cursor)

window.show()
sys.exit(app.exec_())

获取光标位置

思路

在一控件内移动时,如果监听了鼠标位置,则移动时触发mouseMoveEvent()。而在 QMouseEvent.py 文件中有着可以返回光标位置的函数,如下:

    def globalPos(self): # real signature unknown; restored from __doc__
        """ globalPos(self) -> QPoint """
        pass

    def globalX(self): # real signature unknown; restored from __doc__
        """ globalX(self) -> int """
        return 0

    def globalY(self): # real signature unknown; restored from __doc__
        """ globalY(self) -> int """
        return 0

    def localPos(self): # real signature unknown; restored from __doc__
        """ localPos(self) -> QPointF """
        pass

    def pos(self): # real signature unknown; restored from __doc__
        """ pos(self) -> QPoint """
        pass

通过这些函数便可获取光标当前位置,配合重写控件的 mouseMoveEvent() 方法,当光标移动到控件内时打印出光标位置:

class Window(QWidget):
    def mouseMoveEvent(self, me) -> None:
        print(me.localPos())

设置光标位置

  • 设置是否跟踪鼠标
    • 不跟踪 :鼠标移动时,必须处于按下状态,才会触发mouseMoveEvent事件
    • 跟踪 :鼠标移动时,不处于按下状态,也会触发mouseMoveEvent事件
setMouseTracking(bool)
  • 对于 QCursor() 光标对象,可以使用 .pos() 方法获取位置。
cursor = QCursor(pixmap.scaled(50, 50), 0, 0)  # scaled()对鼠标对象进行缩放,并设置触发点为0,0(默认为-1,-1,在鼠标光标对象的中心)
window.setCursor(cursor)
print(cursor.pos())
  • 通过 setPos() 方法可以设置光标位置。
cursor.setPos(0, 0)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

__Witheart__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值