小白的笔记总结:PyQt5 设置鼠标光标的形状setCursor

一、设置鼠标光标的基本操作

1.设置鼠标光标的形状

光标形状如下图所示

2.鼠标形状设置代码实战

设置鼠标形状方法setCursor(),根据传参不同设置不同形状
光标的设置只需要使用setCurror()即可,以下示例了如何设置光标的样式:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

# 0. 导入需要的包和模块

from PyQt5.Qt import *  # 主要包含了我们常用的一些类, 汇总到了一块

import sys

# 1. 创建一个应用程序对象

app = QApplication(sys.argv)

# 2. 控件的操作

# 2.1 创建控件

window = QWidget()

# 2.2 设置控件

#设置窗口标题,默认标题是python,只有顶级控件才可以设置标题栏的标题

window.setWindowTitle("鼠标相关操作")

#设置窗口大小,注意,设置的空间尺寸大小,不包含上面的标题栏

window.resize(500, 500)

#默认鼠标形状是个斜箭头

window.setCursor(Qt.ArrowCursor)

# 2.3 展示控件

window.show()

# 3. 应用程序的执行, 进入到消息循环

sys.exit(app.exec_())

默认鼠标形状是个斜箭头
window.setCursor(Qt.ArrowCursor)
当鼠标移动到控件上市,展示我们设置的鼠标样式

以上笔记资料来源:python利用PyQt5设计鼠标显示形状_python_脚本之家 (jb51.net)

二、自定义光标

1. 素材准备

在游戏界面,通常不会使用我们系统的鼠标,Qt也可以自定义光标样式,首先需要准备一个或者是系列图标,这里预先准备了一个简约的光标:


2. 程序设计


2.1 一个简单的程序


简单的定义一个光标需要以下三步:

1.创建一个图形对象
2.将图形对象传入鼠标对象
3.使用setCursor()方法设置对象


以下是程序示例:

from PyQt5.Qt import *
import sys

app = QApplication(sys.argv)

# 创建一个控件
window = QWidget()
window.resize(500,500)
window.move(300,300)
window.setWindowTitle("Cursor")

#1. 创建光标的图像,参数为光标的相对位置(本文将光标存在工程目录的Cursor_png文件夹下)
pixmap = QPixmap('Cursor_png/01.png')
#2. 将光标对象传入鼠标对象中
cursor = QCursor(pixmap)
#3. 设置控件的光标
window.setCursor(cursor)

window.show()

if __name__ == '__main__':
    sys.exit(app.exec_())

其运行效果如下图所示:

2.2 调整光标


上图我们导入了一个光标,但是它显然太大了,我们需要通过程序将其设置小一些,另外,非常大的光标让我们注意到一个问题:如果此时有一个按钮,那么这个光标的哪个位置放在按钮上面,才可以单击按钮?是光标的头部还是光标的尾部,还是光标的任意一个地方?这同样可以通过程序来设置,以下是改进后的程序:

from PyQt5.Qt import *
import sys

app = QApplication(sys.argv)

# 创建一个父空间
window = QWidget()
window.resize(500,500)
window.move(300,300)
window.setWindowTitle("Cursor")

#1. 创建光标的图像,参数为光标的相对位置
pixmap = QPixmap('Cursor_png/01.png')
#2. 创建一个新的图像,为原素材缩小到15*20大小
new_pixmap = pixmap.scaled(15,20)
#3. 将新光标对象传入鼠标对象中,并将鼠标热点设为左上角
cursor = QCursor(new_pixmap,0,0)
#4. 设置控件的光标
window.setCursor(cursor)

window.show()

if __name__ == '__main__':
    sys.exit(app.exec_())
程序运行如下所示:

程序使用 new_pixmap = pixmap.scaled(15,20)来生成一个新的对象,这是因为scaled将重新修改大小后的图像作为一个新对象返回,而不是修改原对象本身,这和pygame操作是一样的。所以我们创建一个new_pixmap对象存储这个返回的对象。其中,第一个参数为宽度,第二个参数为高度。
程序还定义了鼠标的热点,即有效的像素为(0,0),通过 QCursor(new_pixmap,0,0) 的第3,4个参数来设置,如果你不太了解这个概念,可以自行修改这2参数,然后去尝试点击最小化或者其他控件,来感受一下这2个参数的作用。

2.3 其他API

这里在继续介绍光标的其他常用的接口函数:

  • 恢复鼠标样式:unsetCursor()
  • 获取鼠标坐标:cursor.pos()
  • 设置鼠标位置:setPos(200,200)
  • 鼠标跟踪(获取鼠标的x.y值):mouseMoveEvent()

以下程序示例了这三个函数的使用:

from PyQt5.Qt import *
import sys

app = QApplication(sys.argv)

# 创建一个父空间
window = QWidget()
window.resize(500,500)
window.move(300,300)
window.setWindowTitle("Cursor")

pixmap = QPixmap('Cursor_png/01.png')
new_pixmap = pixmap.scaled(15,20)
cursor = QCursor(new_pixmap,0,0)

#1. 设置控件的光标
window.setCursor(cursor)
#2. 恢复鼠标默认值
window.unsetCursor()
#3. 获取鼠标对象
cursor = window.cursor()
#4. 设置鼠标位置
cursor.setPos(200,200)
#5. 打印鼠标的位置
print(cursor.pos())
本部分笔记资料来源:pyQt5 学习笔记(6)设置鼠标(光标)样式_pyqt5 cursor-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值