pygame光标

文章目录

    • 系统内置光标
    • 自定义光标

系统内置光标

pygame.mouse中,通过get_cursor和set_cursor来获取和设置光标状态。

pygame中封装了如下常量,表示不同的光标形态

常量说明
0pygame.SYSTEM_CURSOR_ARROW箭头
1pygame.SYSTEM_CURSOR_IBEAM插入光标
2pygame.SYSTEM_CURSOR_WAIT等待
3pygame.SYSTEM_CURSOR_CROSSHAIR十字
4pygame.SYSTEM_CURSOR_WAITARROW小型等待
5pygame.SYSTEM_CURSOR_SIZENWSE倾斜双箭头⤡
6pygame.SYSTEM_CURSOR_SIZENESW倾斜双箭头⤢
7pygame.SYSTEM_CURSOR_SIZEWE水平双箭头
8pygame.SYSTEM_CURSOR_SIZENS竖直双箭头
9pygame.SYSTEM_CURSOR_SIZEALL十字箭头
10pygame.SYSTEM_CURSOR_NO禁止标志
11pygame.SYSTEM_CURSOR_HAND抓手

下面做一个示例,逐一展示这些光标,其逻辑是,每点击一次,光标的序号加一。

import pygame as pgpg.init()
screen = pg.display.set_mode([400, 200])ind = 0
pg.mouse.set_cursor(cursors[ind])
going = True
while going:pg.time.delay(60)screen.fill((0, 75, 30))pg.display.flip()for event in pg.event.get():if event.type == pg.QUIT or (event.type == pg.KEYDOWN and event.key == pg.K_ESCAPE):pg.quit()going = Falseif event.type == pg.MOUSEBUTTONDOWN:ind = (ind+1) % 12pg.mouse.set_cursor(pg.cursors.Cursor(ind))

效果如下

在这里插入图片描述

自定义光标

在上面的示例中,用到了pygame.cursors中的Cursor类,此即光标对象。在pygame.cursors中,除了这个对象,还封装了compile和load_xbm函数,前者用于把字符串编译为光标形状,后者用于加载xbm文件。

下面通过compile和图形来分别创建光标,示例如下

在这里插入图片描述

import pygame as pgpg.init()
screen = pg.display.set_mode([600, 400])bitmap_1 = pg.cursors.Cursor(*pg.cursors.arrow)
bitmap_2 = pg.cursors.Cursor((24, 24), (0, 0), *pg.cursors.compile(pg.cursors.thickarrow_strings)
)# 通过一个色块来创建光标
surf = pg.Surface((40, 40))
surf.fill((120, 50, 50))
color = pg.cursors.Cursor((20, 20), surf)cursors = [bitmap_1, bitmap_2, color]
ind = 0pg.mouse.set_cursor(cursors[ind])going = True
while going:pg.time.delay(60)screen.fill((0, 75, 30))pg.display.flip()for event in pg.event.get():if event.type == pg.QUIT or (event.type == pg.KEYDOWN and event.key == pg.K_ESCAPE):pg.quit()going = Falseif event.type == pg.MOUSEBUTTONDOWN:ind = (ind+1) % len(cursors)pg.mouse.set_cursor(cursors[ind])

上述代码中一共设置了三种光标,bitmap1通过cursors中的箭头来生成;其二则通过字符串来编译鼠标形式;其三则直接用一个矩形作为光标。其中thickarrow_strings打印结果如下

>>> import pprint
>>> pprint.pprint(pg.cursors.thickarrow_strings)
('XX                      ','XXX                     ','XXXX                    ','XX.XX                   ','XX..XX                  ','XX...XX                 ','XX....XX                ','XX.....XX               ','XX......XX              ','XX.......XX             ','XX........XX            ','XX........XXX           ','XX......XXXXX           ','XX.XXX..XX              ','XXXX XX..XX             ','XX   XX..XX             ','     XX..XX             ','      XX..XX            ','      XX..XX            ','       XXXX             ','       XX               ','                        ','                        ','                        ')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/228918.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis高可用集群架构

高可用集群架构 哨兵模式缺点 主从切换阶段, redis服务不可用,高可用不太友好只有单个主节点对外服务,不能支持高并发单节点如果设置内存过大,导致持久化文件很大,影响数据恢复,主从同步性能 高可用集群…

Docker容器常用命令

文章目录 启动类命令帮助类命令镜像命令列出本地主机上的镜像在远程仓库中搜索镜像下载镜像保存镜像加载 tar 包为镜像查看占据的空间删除镜像 虚悬镜像命令自动补全新建启动容器启动交互式容器启动守护式容器 列出正在运行的容器容器其他启停操作启动已经停止的容器重启容器停…

AWS连甩3项Serverless创新,高效创建和操作缓存,用AI优化资源配置性价比

云创科技11月28日拉斯维加斯报道,在一年一度的AWS re:Invent首日,AWS实用计算高级副总裁Peter DeSantis延续Monday Night Live的传统,发表主题演讲并分享了AWS数据库和分析产品组合中的3项Serverless创新,以帮助客户在任何规模下分…

前五年—中国十大科技进展新闻(2012年—2017年)

前五年—中国十大科技进展新闻(2012-2017) 2017年中国十大科技进展新闻1. 我国科学家利用化学物质合成完整活性染色体2. 国产水下滑翔机下潜6329米刷新世界纪录3. 世界首台超越早期经典计算机的光量子计算机诞生4. 国产大型客机C919首飞5. 我国首次海域天…

MySQL双主双从数据库集群搭建

1 引言 在之前的文章中提到过相关搭建方法,具体请参考《MySQL主从数据库搭建》这篇文章,本文主要讲述双主双从,双主多从集群的搭建方式。 这里要问一个问题,为什么MySQL要搭建数据库集群呢?我想应该有以下几点原因&…

揭秘Git高手的10个秘密武器:让你的工作效率飙升!

Git和GitHub是每个软件工程师都必须了解的最基本的工具。它们是开发人员日常工作不可或缺的一部分,每天都要与之互动。 精通Git不仅能简化你的日常操作,还能显著提高生产力。在这篇文章中,我们将探讨一组能够极大提升生产力的命令。 随着对…

pg truncate

命令选项 TRUNCATE [ TABLE ] [ ONLY ] name [ * ] [, ... ][ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]1.ONLY:只truncate指定的表。当表有继承子表或有子分区时,默认会一起truncate;only可只truncate继承父表。分区父表不能指定only --不…

【数据结构】树与二叉树(廿五):树搜索给定结点的父亲(算法FindFather)

文章目录 5.3.1 树的存储结构5. 左儿子右兄弟链接结构 5.3.2 获取结点的算法1. 获取大儿子、大兄弟结点2. 搜索给定结点的父亲a. 算法FindFatherb. 算法解析c. 代码实现 3. 代码整合 5.3.1 树的存储结构 5. 左儿子右兄弟链接结构 【数据结构】树与二叉树(十九&…

2023年港澳台联考中录取分数高性价比的985和211大学来啦

导读 一直以来,985和211都是港澳台联考报名录取中,大家最关心的两类大学。其实每年的港澳台联考都有一些性价比很高的学校,今天我们就来看一下这些优秀的985和211大学吧!(景于行跟您承诺,本篇文章分享的分数…

SpringBoot+VUE3前后端分离-【支付宝支付】

1、支付宝沙箱应用申请 https://open.alipay.com/develop/sandbox/app 打开支付宝沙箱能够看到如下信息: 获取到appid; 2、获取应用私钥以及支付宝公钥 在接口加密方式选择公钥模式启用,根据操作即可获取应用公钥、应用私钥以及支付宝公钥…

uniapp使用vue3和ts开发小程序获取用户城市定位

这个组件的功能:可以重新定位获取到用户的具体位置,这个是通过getLocation这个api和高德地图的api获取到的,getLocation这个api需要在微信公众平台后台>开发管理> 接口管理里面申请才能使用的,不然无法使用哦,这…

如何处理枚举类型(上)

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 我们会分为上、下两篇分…