一、设置鼠标光标的基本操作
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 |
|
默认鼠标形状是个斜箭头
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博客