pygame光标

news2024/11/28 16:53:20

文章目录

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

系统内置光标

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 pg

pg.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 = False
        if event.type == pg.MOUSEBUTTONDOWN:
            ind = (ind+1) % 12
            pg.mouse.set_cursor(pg.cursors.Cursor(ind))

效果如下

在这里插入图片描述

自定义光标

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

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

在这里插入图片描述

import pygame as pg

pg.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 = 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 = False
        if 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.coloradmin.cn/o/1266625.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Pikachu靶场(PHP反序列化漏洞)

查看php反序列化漏洞的概述&#xff0c;了解序列化与反序列化。 构造payload <?php class S{var $test "<script>alert(wjy)</script>"; } $c new S(); echo(serialize($c)); ?>将对象序列化为O:1:"S":1:{s:4:"test";s:…

jenkins pipeline 运行超时后强制停止

在Jenkins中&#xff0c;Pipeline是一种用于定义持续集成/持续交付&#xff08;CI/CD&#xff09;流程的工具。有时候&#xff0c;Pipeline的执行可能会超时&#xff0c;需要强制停止。 要在Jenkins Pipeline中设置超时&#xff0c;并在超时后强制停止运行&#xff0c;可以使用…

djangorestframework modelserializer 处理关系字段

djangorestframework modelserializer 处理关系字段 0.技术体系 django4.2 djangorestframework vue3 element-plus uWSGI(部署) 宝塔 1.关系 一对一、多对一、多对多 2.drf modelserializer对关系字段的处理 modelserializer默认处理关系字段为PrimaryKeyRelatedField…

个体诊所门诊电子处方软件,个体药店收银系统,配方模板一键导入设置和操作教程

个体诊所门诊电子处方软件&#xff0c;个体药店收银系统&#xff0c;配方模板一键导入设置和操作教程 配方模板设置教程&#xff1a;软件导航栏点击 基本信息设置——配方模板设置 操作步骤&#xff1a; 1、添加分类/管理分类&#xff1a;添加常用的分类名称 2、在常用配方分…

在线教育机构如何借助小程序技术创新

随着人工智能AI技术的发展&#xff0c;我们的生活学习工作方式都在经历变化。在线教育也处于这场变化的核心之中&#xff0c;同样借助这股东风引来了行业的一波红利期。 在正式分享在线教育行业的开始&#xff0c;我们先简单搞清楚什么是在线教育。 在线教育行业是指通过互联…

交叉编译

1. 交叉开发 交叉编译&#xff1a; 在电脑把程序编写 编译 调试好 再下载到嵌入式产品中运行 编译&#xff1a; gcc 之前编译环境和运行环境是一样的 交叉编译&#xff1a; 编译 把编译代码和运行分开 编译代码在虚拟机中 运行…

【前端】浅谈async/await异步传染性

文章目录 概述观点无法解决可以解决 来源 概述 "异步传染性"问题通常是指&#xff0c;当一个函数使用了async和await&#xff0c;其调用者也需要使用async和await处理异步操作&#xff0c;导致整个调用链都变成异步的。这种情况可能导致代码变得更复杂&#xff0c;不…

居家适老化设计第三十四条---卫生间之照明

居家适老化卫生间照明设计需要考虑以下几个方面&#xff1a;1. 光源选择&#xff1a;选择适合老年人眼睛的柔和光源&#xff0c;避免刺眼和眩光的发生。可以选择LED灯具&#xff0c;因为它们具有节能、寿命长和可调光的特点。2. 光线布置&#xff1a;在不同区域设置不同的光线&…

为什么Redis这么快?5分钟成为Redis高手

Redis简介 Redis 是 C 语言开发的一个开源高性能键值对的内存数据库&#xff0c;可以用来做数据库、缓存、消息中间件等场景&#xff0c;是一种 NoSQL&#xff08;not-only sql&#xff0c;非关系型数据库&#xff09;的数据库。 Redis特点 优秀的性能&#xff0c;数据是存储…

伪原创工具,免费的5款伪原创工具

寻找一款合适的伪原创工具是提高写作效率的重要一环。在这里&#xff0c;我们为您推荐了五款不同特点的伪原创工具&#xff0c;并对它们进行了详细的测评。 第一款伪原创工具&#xff1a;147SEO改写 147SEO改写是一款强大的AI智能伪原创写作工具&#xff0c;具备多个模板供用…

Postman进阶功能实战演练

Postman除了前面介绍的一些功能&#xff0c;还有其他一些小功能在日常接口测试或许用得上。今天&#xff0c;我们就来盘点一下&#xff0c;如下所示&#xff1a; 1.数据驱动 想要批量执行接口用例&#xff0c;我们一般会将对应的接口用例放在同一个Collection中&#xff0c;然…

Ubuntu Linux玩童年小霸王插卡游戏

1.下载安装模拟器 在Windows平台模拟器非常多&#xff0c;而且效果也很优秀&#xff0c;Linux平台的用户常常很羡慕&#xff0c;却因为系统的缘故&#xff0c;无法使用这样的模拟器&#xff0c;但是随着时代的发展&#xff0c;Linux平台也出现了许多优秀的模拟器&#xff0c;现…

Java基础之原码,反码,补码,位运算符

文章目录 前言一、二进制在运算中介绍二、原码&#xff0c;反码&#xff0c;补码&#xff08;针对有符号的&#xff09;三、位运算符按位与&按位或 |按位异或 ^按位取反 ~算术右移>>算术左移<<逻辑右移>>> 总结 前言 原码&#xff0c;反码&#xff0…

【黑马甄选离线数仓day07_常见优化手段及核销主题域开发】

1.常见优化手段 1.1 分桶表基本介绍 分桶表: 分文件的, 在创建表的时候, 指定分桶字段, 并设置分多少个桶, 在添加数据的时候, hive会根据设置分桶字段, 将数据划分到N个桶(文件)中, 默认情况采用HASH分桶方案 , 分多少个桶, 取决于建表的时候, 设置分桶数量, 分了多少个桶最终…

内衣洗衣机和手洗哪个干净?小型洗衣机质量排名

这两年内衣洗衣机可以称得上较火的小电器&#xff0c;小小的身躯却有大大的能力&#xff0c;一键可以同时启动洗、漂、脱三种全自动为一体化功能&#xff0c;在多功能和性能的提升上&#xff0c;还可以解放我们双手的同时将衣物给清洗干净&#xff0c;让越来越多小伙伴选择一款…

基于Webserver的工业数据采集控制小项目

主要用到的知识点&#xff0c;http协议&#xff0c;modbus协议&#xff0c;以及进程间通信&#xff0c;消息队列&#xff0c;共享内存等 框架 数据采集 #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #…

C#常用运算符的优先级

前言 运算符在C#编程语言中扮演着重要的角色&#xff0c;用于执行各种计算和操作。了解运算符的优先级是编写高效和正确代码的关键。本文将深入探讨C#中38个常用运算符的优先级划分和理解&#xff0c;并提供详细的说明和示例&#xff0c;以帮助读者更好地理解运算符的使用。 目…

linux设置主机名

查看主机名&#xff1a;hostname 临时修改主机名&#xff1a;hostname 新主机名 [rootlocalhost ~]#hostname centos [rootlocalhost ~]#hostname centos 永久修改主机名&#xff1a; [rootlocalhost ~]#cat /etc/hostname localhost.localdomain

C++ day42背包理论基础01 + 滚动数组

背包问题的重中之重是01背包 01背包 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品只能用一次&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 每一件物品其实只有两个状态&#xff0c;取或者不…

AI技术如何助力实现智慧交通

人工智能的常见优势在于能够实时、高效地分析处理大量的数据&#xff0c;并结合算法模型提供个性化、专业化的服务。在智慧交通方面&#xff0c;人工智能同样可以发挥专长&#xff0c;助力打造智能高效的交通运输网络&#xff0c;本篇就为大家简单介绍一下AI技术如何促进智慧交…