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 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.mfbz.cn/a/199180.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2161根据数字划分数组

给你一个下标从 0 开始的整数数组 nums 和一个整数 pivot 。请你将 nums 重新排列,使得以下条件均成立: 所有小于 pivot 的元素都出现在所有大于 pivot 的元素 之前 。所有等于 pivot 的元素都出现在小于和大于 pivot 的元素 中间 。小于 pivot 的元素之…

第15关 K8s HPA:自动水平伸缩Pod,实现弹性扩展和资源优化

------> 课程视频同步分享在今日头条和B站 大家好,我是博哥爱运维,这节课带来k8s的HPA 自动水平伸缩pod( 视频后面有彩蛋 : ) )。 我们知道,初始Pod的数量是可以设置的,同时业务也分流量高峰和低峰&a…

(2)(2.1) Lightware SF40/C(360度)

文章目录 前言 1 安装SF40c 2 连接自动驾驶仪 3 通过地面站进行配置 4 参数说明 前言 Lightware SF40/C 360 度激光雷达(Lightware SF40/C 360degree lidar)可在 Copter-3.4 及更高版本的 Loiter 模式下用于物体回避。 !Warning 该功能尚未在各种情况下进行过…

第二十章 -----多线程

20.1 线程简介 计算机完全可以将多种活动同时进行,这种思想在java中称为并发,将并发完成的每一件事情称为线程 线程的特点: 极小的单位 一个进程有很多个线程 线程共享进程的资源 20.2 创建线程 20.2.1 继承Thread类 Thread类是Java.l…

Mac苹果视频剪辑:Final Cut Pro Mac

Final Cut Pro是一款由Apple公司开发的专业视频非线性编辑软件,是业界著名的视频剪辑软件之一。它最初发布于1999年,是Mac电脑上的一款独占软件。Final Cut Pro具有先进的剪辑工具、丰富的特效和颜色分级、音频处理等功能,使得用户可以轻松地…

vue2通过权限控制tab标签显示和隐藏

vue2通过权限控制tab标签显示和隐藏 1、前言2、v-if实现自定义控制 1、前言 在开发过程中,我们可能会遇到这样一个场景:根据不同权限对tab栏内容进行控制,这时候用自定义指令v-permission就达不到我们想要的效果,其是将当前节点的…

Kubernetes Pod 介绍

文章目录 🔊博主介绍🥤本文内容Pod 介绍与原理讲解Pod 生命周期管理Pod 的健康检查 📢文章总结📥博主目标 🔊博主介绍 🌟我是廖志伟,一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51…

trino push down fliter

依据trino 432 版本而写 1. 调用链 2. 先是元数据,然后做扫描数据层的filter pushFilterIntoTableScan

web框架,django,路由控制,视图层(补充)

web框架 是什么? web 框架是什么---》别人帮咱们写了一些基础代码---》我们只需要在固定的位置写固定的代码--》就能实现一个web应用 Web框架(Web framework)是一种开发框架,用来支持动态网站、网络应用和网络服务的开发。这大多…

Leetcode—18.四数之和【中等】

2023每日刷题&#xff08;四十一&#xff09; Leetcode—18.四数之和 实现代码 class Solution { public:vector<vector<int>> fourSum(vector<int>& nums, int target) {vector<vector<int>> ans;sort(nums.begin(), nums.end());int n …

从戴森发明的“球轮手推车”看专利

今天跟大家分享一个特别有意思的专利&#xff0c;那就是戴森发明的球状轮子的手推车。 相信戴森这个品牌很多人都听过&#xff0c;大家熟悉的应该是戴森吹风机和戴森吸尘器。这两个目前是市场上比较高端的家用设备。 很多人也正是因为这些家用设备了解到戴森这个人&#xff0…

C#-认识串口通信并使用串口助手

串口通讯(Serial Communication)&#xff0c;是指外设和计算机间&#xff0c;通过数据信号线、地线等&#xff0c;按位进行传输数据的一种双向通讯方式。 串口是一种接口标准&#xff0c;它规定了接口的电气标准&#xff0c;没有规定接口插件电缆以及使用的通信协议&#xff0…

Linux——vim编辑文件时——.swp文件解决方案

test.cpp样例 当我们vim test.cpp进入编辑文件。 却忘记了保存退出 再次进入就会出现一下画面 当你摁下Enter键位 出现以下几个选项 O——是只读不写 E——是正常打开文件但不会载入磁盘内容 R——覆盖——是加载存储磁盘的文件(当我们忘记保存时&#xff0c;系统会自动帮我…

centos7上用docker部署redis

1. 下载redis镜像 docker pull redis docker images # 查看镜像是否下载成功2. 安装redis容器 2.1 先准备好配置文件redis.conf vi /data/redis/redis.conf写入配置信息&#xff0c;appendonly yes&#xff0c;如果需要给redis配置密码&#xff0c;可以写入requirepass root…

【.NET全栈】.net的微软API接口与.NET框架源码

文章目录 0 前言1 微软官方.net接口学习2 .NET框架源码总结 0 前言 如果浏览器打不开链接&#xff0c;换一个浏览器打开。 我是 打不开微软的链接&#xff0c;使用&#xff1a; 可以打开&#xff01;&#xff01;&#xff01; 1 微软官方.net接口学习 https://docs.microsoft…

接口多态与方法多态

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 在上一篇设计山寨版Str…

Qt路径和Anaconda中QT路径冲突(ubuntu系统)

最近做一个项目需要配置QT库&#xff0c;本项目配置环境如下&#xff1a; Qt version 5 Operating system, version and so on ubuntu 20.04 Description 之前使用过anaconda环境安装过QT5&#xff0c;所以在项目中CMakeLists文件中使用find_package时候&#xff0c;默认使用An…

三 STM32F4使用Sys_Tick 实现微秒定时器和延时

更多细节参考这篇 1. 什么是时钟以及作用 1.1 什么是时钟 时钟是由电路产生的周期性的脉冲信号&#xff0c;相当于单片机的心脏 1.2 时钟对于STM32的作用 指令同步&#xff1a;cpu和内核外设使用时钟信号来进行指令同步数据传输控制&#xff1a; 时钟信号控制数据在内部总…

解决git action发布报错:Input required and not supplied: upload_url

现象&#xff1a; 这个问题死活都找不到原因&#xff0c;后来打了一段调试的代码 - name: Debug Create Release Output run: | echo "Release ID: ${{ env.RELEASE_ID }}" echo "Release Upload URL: ${{ env.RELEASE_UPLOAD_URL }}" env: RELEASE_ID: ${…

c++没有返回值的返回值

上面的函数search没有返回值,因为a不等于1,但是输出的时候会输出6.这恰巧是x的值,如果我们希望a不等于1时返回x,那么这种结果反而是正确的.有时候这种错误的代码可能产生正确的结果反而会加大debug难度 int search(int n) { 00007FF66DB723E0 mov dword ptr [rsp8],e…
最新文章