pygame中的键鼠(keymouse)模块

2023-10-07 22:48
文章标签 模块 pygame 键鼠 keymouse

本文主要是介绍pygame中的键鼠(keymouse)模块,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

key模块

功能

方法详解

pygame.key.get_focused()

pygame.key.get_pressed()

pygame.key.get_mods()

pygame.key.set_mods()

pygame.key.set_repeat()

pygame.key.get_repeat()

pygame.key.name()

pygame.key.key_code()

pygame.key.start_text_input()

pygame.key.stop_text_input()

pygame.key.set_text_input_rect()

mouse模块

功能

方法详解

pygame.mouse.get_pressed()

pygame.mouse.get_pos()

pygame.mouse.get_rel()

pygame.mouse.set_pos()

pygame.mouse.set_visible()

pygame.mouse.get_visible()

pygame.mouse.get_focused()

pygame.mouse.set_cursor()

pygame.mouse.get_cursor()


key模块

功能

此模块包含处理键盘的功能。

1.按下和释放键盘按钮时, pygame.event 队列获取 pygame.KEYDOWN 以及 pygame.KEYUP 事件。这两个事件都有 key 和 mod 属性。

  • key:一个表示键盘上(每个)键的整数ID
  • mod:事件发生时处于按下状态的所有修改键的一个位掩码

2. pygame.KEYDOWN 事件具有其他属性: unicode and scancode

  • unicode:完全翻译的输入字符的单个字符串,考虑了shift键和组合键
  • scancode:平台的特定键代码,不同键盘的键代码可能不同,但对于奇怪键的选择(如多媒体键)很有用

New in pygame 2.0.0:pygame.TEXTINPUT事件优先于 pygame.KEYDOWN的 unicode属性。属性text 包含输入。

3.以下是所有用于表示键盘键的常量列表(from pygame.locals):

pygame
Constant      ASCII   Description
---------------------------------
K_BACKSPACE   \b      backspace
K_TAB         \t      tab
K_CLEAR               clear
K_RETURN      \r      return
K_PAUSE               pause
K_ESCAPE      ^[      escape
K_SPACE               space
K_EXCLAIM     !       exclaim
K_QUOTEDBL    "       quotedbl
K_HASH        #       hash
K_DOLLAR      $       dollar
K_AMPERSAND   &       ampersand
K_QUOTE               quote
K_LEFTPAREN   (       left parenthesis
K_RIGHTPAREN  )       right parenthesis
K_ASTERISK    *       asterisk
K_PLUS        +       plus sign
K_COMMA       ,       comma
K_MINUS       -       minus sign
K_PERIOD      .       period
K_SLASH       /       forward slash
K_0           0       0
K_1           1       1
K_2           2       2
K_3           3       3
K_4           4       4
K_5           5       5
K_6           6       6
K_7           7       7
K_8           8       8
K_9           9       9
K_COLON       :       colon
K_SEMICOLON   ;       semicolon
K_LESS        <       less-than sign
K_EQUALS      =       equals sign
K_GREATER     >       greater-than sign
K_QUESTION    ?       question mark
K_AT          @       at
K_LEFTBRACKET [       left bracket
K_BACKSLASH   \       backslash
K_RIGHTBRACKET ]      right bracket
K_CARET       ^       caret
K_UNDERSCORE  _       underscore
K_BACKQUOTE   `       grave
K_a           a       a
K_b           b       b
K_c           c       c
K_d           d       d
K_e           e       e
K_f           f       f
K_g           g       g
K_h           h       h
K_i           i       i
K_j           j       j
K_k           k       k
K_l           l       l
K_m           m       m
K_n           n       n
K_o           o       o
K_p           p       p
K_q           q       q
K_r           r       r
K_s           s       s
K_t           t       t
K_u           u       u
K_v           v       v
K_w           w       w
K_x           x       x
K_y           y       y
K_z           z       z
K_DELETE              delete
K_KP0                 keypad 0
K_KP1                 keypad 1
K_KP2                 keypad 2
K_KP3                 keypad 3
K_KP4                 keypad 4
K_KP5                 keypad 5
K_KP6                 keypad 6
K_KP7                 keypad 7
K_KP8                 keypad 8
K_KP9                 keypad 9
K_KP_PERIOD   .       keypad period
K_KP_DIVIDE   /       keypad divide
K_KP_MULTIPLY *       keypad multiply
K_KP_MINUS    -       keypad minus
K_KP_PLUS     +       keypad plus
K_KP_ENTER    \r      keypad enter
K_KP_EQUALS   =       keypad equals
K_UP                  up arrow
K_DOWN                down arrow
K_RIGHT               right arrow
K_LEFT                left arrow
K_INSERT              insert
K_HOME                home
K_END                 end
K_PAGEUP              page up
K_PAGEDOWN            page down
K_F1                  F1
K_F2                  F2
K_F3                  F3
K_F4                  F4
K_F5                  F5
K_F6                  F6
K_F7                  F7
K_F8                  F8
K_F9                  F9
K_F10                 F10
K_F11                 F11
K_F12                 F12
K_F13                 F13
K_F14                 F14
K_F15                 F15
K_NUMLOCK             numlock
K_CAPSLOCK            capslock
K_SCROLLOCK           scrollock
K_RSHIFT              right shift
K_LSHIFT              left shift
K_RCTRL               right control
K_LCTRL               left control
K_RALT                right alt
K_LALT                left alt
K_RMETA               right meta
K_LMETA               left meta
K_LSUPER              left Windows key
K_RSUPER              right Windows key
K_MODE                mode shift
K_HELP                help
K_PRINT               print screen
K_SYSREQ              sysrq
K_BREAK               break
K_MENU                menu
K_POWER               power
K_EURO                Euro

4.还有一个将键盘按位或组合在一起的修改状态列表(from pygame.locals)。修改器信息包含在 pygame.KEYDOWN 和 pygame.KEYUP 事件的 mod 属性中。 mod 属性是事件发生时处于按下状态的所有修改键的位掩码。修饰符信息可以使用逐位和(AND)进行解码(除了 KMOD_NONE,应该使用equals ==进行比较)。

pygame
Constant      Description
-------------------------
KMOD_NONE     no modifier keys pressed
KMOD_LSHIFT   left shift
KMOD_RSHIFT   right shift
KMOD_SHIFT    left shift or right shift or both
KMOD_LCTRL    left control
KMOD_RCTRL    right control
KMOD_CTRL     left control or right control or both
KMOD_LALT     left alt
KMOD_RALT     right alt
KMOD_ALT      left alt or right alt or both
KMOD_LMETA    left meta
KMOD_RMETA    right meta
KMOD_META     left meta or right meta or both
KMOD_CAPS     caps lock
KMOD_NUM      num lock
KMOD_MODE     AltGr

方法详解

pygame.key.get_focused()

功能:如果显示接收到来自系统的键盘输入,则为真

属性:get_focused() -> bool

当显示窗口具有来自系统的键盘提示时,返回True。如果显示器需要确保不丢失键盘提示,则可以使用 pygame.event.set_grab()获取所有输入。

pygame.key.get_pressed()

功能:获取所有键盘按钮的状态

属性:get_pressed() -> bools

  1. 返回一系列布尔值,表示键盘上每个键的状态。使用键常量值索引数组。 True 值表示该按钮已按下。
  2. 使用此功能获取按钮列表不是处理用户文本输入的正确方法。无法知道按键的顺序,而且在两次调用 pygame.key.get_pressed()的过程中快速按键完全不会被注意到,也无法将这些按下的键转换为完全翻译的字符值。见 pygame.event 队列中 pygame.KEYDOWN 事件关于此功能的描述。

pygame.key.get_mods()

功能:确定要保留的修改键

属性:get_mods() -> int

返回一个整数表示所保存的所有修改键的位掩码。使用按位运算符可以测试是否按了特定的修改键。

pygame.key.set_mods()

功能:临时设置要按下的修改键

属性:set_mods(int) -> None

创建一个要施加到程序上的修饰键常量的位掩码。

pygame.key.set_repeat()

功能:控制重复按住的键

属性:

  • set_repeat() -> None
  • set_repeat(delay) -> None
  • set_repeat(delay, interval) -> None
  1. 启用键盘重复时,按住的键将生成多个 pygame.KEYDOWN事件。 delay参数是第一次重复发送 pygame.KEYDOWN 事件之前的毫秒数。在那之后,另一个 pygame.KEYDOWN 事件将每隔 interval 毫秒发送一次。如果提供了delay值,而未提供 interval值或值为0,则将设置 intervaldelay的值相同。
  2. 若要禁用键重复,请在没有参数或delay设置为0的情况下调用此函数。
  3. 当pygame初始化时,键重复被禁用。

提示:ValueError -- if delay or interval is < 0

Changed in pygame 2.0.0:如果 delayinterval 小于0,引发一个 ValueError(而不是pygame.error)。

pygame.key.get_repeat()

功能:查看重复按住的键

属性:get_repeat() -> (delay, interval)

获取重复键盘的 delayinterval值。参考 pygame.key.set_repeat()对这些值的说明。

New in pygame 1.8.

pygame.key.name()

功能:获取键盘标识符的名称

属性:name(key) -> string

从键盘按钮id常量中获取按钮的描述性名称。

pygame.key.key_code()

功能:从键盘名中获取键盘标识符

属性:key_code(name=string) -> int

从键的描述性名称获取键标识符代码。这将返回一个与K_* keycodes匹配的整数。例如:

>>> pygame.key.key_code("return") == pygame.K_RETURN
True
>>> pygame.key.key_code("0") == pygame.K_0
True
>>> pygame.key.key_code("space") == pygame.K_SPACE
True

提示:

  • ValueError -- if the key name is not known.
  • NotImplementedError -- if used with SDL 1.

New in pygame 2.0.0.

pygame.key.start_text_input()

功能:开始处理输入法组合

属性:start_text_input() -> None

  1. 开始接收pygame.TEXTEDITING 和 pygame.TEXTINPUT事件处理输入法(IME)。
  2. 在启动或更改IME组合时接收一个 pygame.TEXTEDITING事件。它包含合成textlength和编辑合成中的 start 位置。当提交合成(或接收到非输入法输入)时一个pygame.TEXTINPUT事件已生成。
  3. 普通pygame.TEXTINPUT事件不依赖于此方法。

New in pygame 2.0.0.

pygame.key.stop_text_input()

功能:停止处理输入法组合

属性:stop_text_input() -> None

  1. 停止接收pygame.TEXTEDITING 和 pygame.TEXTINPUT事件处理IME的。
  2. 普通 pygame.TEXTINPUT事件不依赖于此方法。

New in pygame 2.0.0.

pygame.key.set_text_input_rect()

功能:控制候选列表的位置

属性:set_text_input_rect(Rect) -> None

  1. 这将设置用于输入法键入的矩形。如果支持,它将控制候选列表的打开位置。
  2. 普通 pygame.TEXTINPUT事件不依赖于此方法。

New in pygame 2.0.0.

 

mouse模块

功能

此模块可用于获取鼠标设备的当前状态,还可以改变鼠标的系统光标。

  1. 设置显示模式后,事件队列将开始接收鼠标事件。当鼠标按钮按下和释放时生成 pygame.MOUSEBUTTONDOWNpygame.MOUSEBUTTONUP的事件。这些事件包含一个button属性,表示按下了哪个按钮。鼠标滚轮滚动时将生成 pygame.MOUSEBUTTONDOWNpygame.MOUSEBUTTONUP 事件。当车轮向上滚动时,按钮将设置为4;当车轮向下滚动时,按钮将设置为5。每当鼠标移动时,它会生成一个pygame.MOUSEMOTION事件。鼠标的移动被分解成小而精确的运动事件。当鼠标移动时,许多运动事件将被放置在队列中。未从事件队列中正确清除鼠标运动事件是事件队列填满的主要原因。
  2. 如果鼠标光标被隐藏,并且输入被捕捉到当前显示,则鼠标将进入虚拟输入模式,在该模式下,鼠标的相对移动永远不会被屏幕的边框阻止。查看函数pygame.mouse.set_visible() 和 pygame.event.set_grab() 获取配置。

pygame2中的鼠标滚轮行为

  • SDL2的SDL_MOUSEWHEEL事件具有鼠标滚轮行为的适当功能。SDL_MOUSEWHEEL取代了将鼠标滚动视为类似于按钮的类型的旧方法。新事件支持水平和垂直滚动移动(带符号的整数值表示滚动量)以及“翻转”方向(每个轴设置正值和负值表示被翻转)。阅读有关SDL2输入相关更改的详细信息:https://wiki.libsdl.org/MigrationGuide#Input
  • 在pygame2中,鼠标滚轮功能可以通过监听pygame.events.MOUSEWHEEL事件类型。当触发此事件时,开发人员可以使用pygame.event.get()获取Event对象。该对象可用于访问有关鼠标滚动条的数据。

示例如下:

# Taken from husano896's PR thread:
import pygame
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((640,480))
clock = pygame.time.Clock()def main():while True:for event_var in pygame.event.get():if event_var.type == QUIT:pygame.quit()returnelif event_var.type == MOUSEWHEEL:print(event_var) # can access properties with prop notation# (ex: event_var.y)clock.tick(60)# Execute game:
main()

 

方法详解

pygame.mouse.get_pressed()

功能:获取鼠标按钮的状态

属性:get_pressed() -> (button1, button2, button3)

  1. 返回一个表示所有鼠标按钮状态的布尔值序列。如果值为真,则表示调用当前鼠标正在按下。
  2. 要获得所有鼠标事件,最好使用pygame.event.wait() 或 pygame.event.get()检查这些事件是否是MOUSEBUTTONDOWNMOUSEBUTTONUP或 MOUSEMOTION
  3. 在X11上,一些X服务器会使用中间按钮模拟。当同时单击按钮1和3时,可以发出2按钮事件。
  4. 记得在此函数之前调用函数pygame.event.get()。否则将无法正常运行。

pygame.mouse.get_pos()

功能:获取鼠标光标位置

属性:get_pos() -> (x, y)

返回鼠标光标的 X 和 Y位置。该位置是相对于显示器的左上角。光标位置可以位于显示窗口之外,但始终限制在屏幕上。

pygame.mouse.get_rel()

功能:获取鼠标移动量

属性:get_rel() -> (x, y)

返回自上次调用此函数以来在 XY中的移动量。鼠标光标的相对移动受屏幕边缘的限制,但请参见虚拟输入鼠标模式以了解解决此问题的方法。

pygame.mouse.set_pos()

功能:设置鼠标光标位置

属性:set_pos([x, y]) -> None

将当前鼠标位置设置为给定的参数。如果鼠标光标可见,它将跳转到新的坐标。移动鼠标将生成新的pygame.MOUSEMOTION事件。

pygame.mouse.set_visible()

功能:隐藏或显示鼠标光标

属性:set_visible(bool) -> bool

如果bool参数为true,则鼠标光标将可见。这将返回光标以前的可见状态(true/false)。

pygame.mouse.get_visible()

功能:获取鼠标光标的当前可见性状态。

get_visible() -> bool

如果鼠标光标当前可见,则返回True;如果鼠标光标不可见,则返回False。

New in pygame 2.0.0.

pygame.mouse.get_focused()

功能:检查显示器是否接收到鼠标输入

属性:get_focused() -> bool

  1. 当pygame接收到鼠标输入事件时返回true。
  2. 在窗口(window)模式时,此方法最有用。相反,在全屏(full-screen)模式下,此方法始终返回true。
  3. MS Windows下,具有鼠标焦点的窗口也具有键盘焦点。但在X-Windows下,一个窗口可以接收鼠标事件,另一个窗口可以接收键盘事件。 pygame.mouse.get_focused()指示pygame窗口是否接收鼠标事件。.

pygame.mouse.set_cursor()

功能:设置系统鼠标光标的图像

属性:set_cursor(size, hotspot, xormasks, andmasks) -> None

  1. 当鼠标光标可见时,它将使用给定的位掩码数组显示为黑白位图。size是一个包含光标宽度和高度的序列。hotspot是包含光标热点位置的序列。xormasks是包含游标xor数据掩码的字节序列。andmasks是一个包含光标位掩码数据的字节序列。
  2. 宽度必须是8的倍数,并且掩码数组必须是给定宽度和高度的正确大小。否则会引发异常。
  3. pygame.cursor文件用于帮助为系统光标创建默认和自定义掩码的模块。

pygame.mouse.get_cursor()

功能:获取系统鼠标光标的图像

属性:get_cursor() -> (size, hotspot, xormasks, andmasks)

  1. 获取有关鼠标系统光标的信息。返回值与传入的参数与pygame.mouse.set_cursor()相同。
  2. 此方法对于SDL2不可用,因为SDL2不提供实现此方法的底层代码。

 

 

 

整理自:

  • https://www.pygame.org/docs/ref/key.html
  • https://www.pygame.org/docs/ref/mouse.html

这篇关于pygame中的键鼠(keymouse)模块的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/160947

相关文章

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

Jenkins构建Maven聚合工程,指定构建子模块

一、设置单独编译构建子模块 配置: 1、Root POM指向父pom.xml 2、Goals and options指定构建模块的参数: mvn -pl project1/project1-son -am clean package 单独构建project1-son项目以及它所依赖的其它项目。 说明: mvn clean package -pl 父级模块名/子模块名 -am参数

寻迹模块TCRT5000的应用原理和功能实现(基于STM32)

目录 概述 1 认识TCRT5000 1.1 模块介绍 1.2 电气特性 2 系统应用 2.1 系统架构 2.2 STM32Cube创建工程 3 功能实现 3.1 代码实现 3.2 源代码文件 4 功能测试 4.1 检测黑线状态 4.2 未检测黑线状态 概述 本文主要介绍TCRT5000模块的使用原理,包括该模块的硬件实现方式,电路实现原理,还使用STM32类

python内置模块datetime.time类详细介绍

​​​​​​​Python的datetime模块是一个强大的日期和时间处理库,它提供了多个类来处理日期和时间。主要包括几个功能类datetime.date、datetime.time、datetime.datetime、datetime.timedelta,datetime.timezone等。 ----------动动小手,非常感谢各位的点赞收藏和关注。----------- 使用datet

C8T6超绝模块--EXTI

C8T6超绝模块–EXTI 大纲 控制流程结构体分析EXTI实现按键 具体案例 控制流程 这里是流程框图,具体可以去看我STM32专栏的EXTI的具体分析 结构体分析 typedef struct {uint32_t EXTI_Line; // 中断/事件线EXTIMode_TypeDef EXTI_Mode; // EXTI 模式EXTITrigger_TypeDef EXTI_

1、创建多模块的maven springboot项目

现在的java的项目都是多模块的,这次也跟个风。 目标:实现下述结构 项目AcedBoot, 子模块:         aced-api 对外提供接口,         aced-web 给前端提供接口,         aced-service 服务层,         aced-dao 数据底层,包含数据库mapper和实体类entity,         aced-commo

Vue2电商项目(二) Home模块的开发;(还需要补充js节流和防抖的回顾链接)

文章目录 一、Home模块拆分1. 三级联动组件TypeNav2. 其余组件 二、发送请求的准备工作1. axios的二次封装2. 统一管理接口API----跨域3. nprogress进度条 三、 vuex模块开发四、TypeNav三级联动组件开发1. 动态展示三级联动数据2. 三级联动 动态背景(1)、方式一:CSS样式(2)、方式二:JS 3. 控制二三级数据隐藏与显示--绑定styl

PrestaShop免费模块/插件/扩展/工具下载

PrestaShop免费模块/插件/扩展/工具下载 PrestaShop免费模块 适用于您的电子商务网站的PrestaShop模块 现有超过3,000个PrestaShop模块可帮助您自定义在线商店,增加流量,提高转化率并建立客户忠诚度。 使您的电子商务网站成功! 下载(超过142+之多的PrestaShop官网认证的免费模块) 标签PrestaShop免费, PrestaShop免费工

Unity协程搭配队列开发Tips弹窗模块

概述 在Unity游戏开发过程中,提示系统是提升用户体验的重要组成部分。一个设计良好的提示窗口不仅能及时传达信息给玩家,还应当做到不干扰游戏流程。本文将探讨如何使用Unity的协程(Coroutine)配合队列(Queue)数据结构来构建一个高效且可扩展的Tips弹窗模块。 技术模块介绍 1. Unity协程(Coroutines) 协程是Unity中的一种特殊函数类型,允许异步操作的实现