本文主要是介绍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
:一个表示键盘上(每个)键的整数IDmod
:事件发生时处于按下状态的所有修改键的一个位掩码
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
- 返回一系列布尔值,表示键盘上每个键的状态。使用键常量值索引数组。
True
值表示该按钮已按下。 - 使用此功能获取按钮列表不是处理用户文本输入的正确方法。无法知道按键的顺序,而且在两次调用
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
- 启用键盘重复时,按住的键将生成多个
pygame.KEYDOWN
事件。delay
参数是第一次重复发送pygame.KEYDOWN
事件之前的毫秒数。在那之后,另一个pygame.KEYDOWN
事件将每隔interval
毫秒发送一次。如果提供了delay
值,而未提供interval
值或值为0,则将设置interval
与delay
的值相同。 - 若要禁用键重复,请在没有参数或
delay
设置为0的情况下调用此函数。 - 当pygame初始化时,键重复被禁用。
提示:ValueError -- if delay
or interval
is < 0
Changed in pygame 2.0.0:如果 delay
或interval
小于0,引发一个 ValueError
(而不是pygame.error
)。
pygame.key.
get_repeat
()
功能:查看重复按住的键
属性:get_repeat() -> (delay, interval)
获取重复键盘的 delay
和interval
值。参考 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
- 开始接收
pygame.TEXTEDITING
和pygame.TEXTINPUT
事件处理输入法(IME)。 - 在启动或更改IME组合时接收一个
pygame.TEXTEDITING
事件。它包含合成text
、length
和编辑合成中的start
位置。当提交合成(或接收到非输入法输入)时一个pygame.TEXTINPUT
事件已生成。 - 普通
pygame.TEXTINPUT
事件不依赖于此方法。
New in pygame 2.0.0.
pygame.key.
stop_text_input
()
功能:停止处理输入法组合
属性:stop_text_input() -> None
- 停止接收
pygame.TEXTEDITING
和pygame.TEXTINPUT
事件处理IME的。 - 普通
pygame.TEXTINPUT
事件不依赖于此方法。
New in pygame 2.0.0.
pygame.key.
set_text_input_rect
()
功能:控制候选列表的位置
属性:set_text_input_rect(Rect) -> None
- 这将设置用于输入法键入的矩形。如果支持,它将控制候选列表的打开位置。
- 普通
pygame.TEXTINPUT
事件不依赖于此方法。
New in pygame 2.0.0.
mouse模块
功能
此模块可用于获取鼠标设备的当前状态,还可以改变鼠标的系统光标。
- 设置显示模式后,事件队列将开始接收鼠标事件。当鼠标按钮按下和释放时生成
pygame.MOUSEBUTTONDOWN
和pygame.MOUSEBUTTONUP
的事件。这些事件包含一个button属性,表示按下了哪个按钮。鼠标滚轮滚动时将生成pygame.MOUSEBUTTONDOWN
和pygame.MOUSEBUTTONUP
事件。当车轮向上滚动时,按钮将设置为4;当车轮向下滚动时,按钮将设置为5。每当鼠标移动时,它会生成一个pygame.MOUSEMOTION
事件。鼠标的移动被分解成小而精确的运动事件。当鼠标移动时,许多运动事件将被放置在队列中。未从事件队列中正确清除鼠标运动事件是事件队列填满的主要原因。 - 如果鼠标光标被隐藏,并且输入被捕捉到当前显示,则鼠标将进入虚拟输入模式,在该模式下,鼠标的相对移动永远不会被屏幕的边框阻止。查看函数
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)
- 返回一个表示所有鼠标按钮状态的布尔值序列。如果值为真,则表示调用当前鼠标正在按下。
- 要获得所有鼠标事件,最好使用pygame.event.wait() 或 pygame.event.get()检查这些事件是否是
MOUSEBUTTONDOWN
,MOUSEBUTTONUP
或MOUSEMOTION
。 - 在X11上,一些X服务器会使用中间按钮模拟。当同时单击按钮1和3时,可以发出2按钮事件。
- 记得在此函数之前调用函数
pygame.event.get()
。否则将无法正常运行。
pygame.mouse.
get_pos
()
功能:获取鼠标光标位置
属性:get_pos() -> (x, y)
返回鼠标光标的 X
和 Y
位置。该位置是相对于显示器的左上角。光标位置可以位于显示窗口之外,但始终限制在屏幕上。
pygame.mouse.
get_rel
()
功能:获取鼠标移动量
属性:get_rel() -> (x, y)
返回自上次调用此函数以来在 X
和Y
中的移动量。鼠标光标的相对移动受屏幕边缘的限制,但请参见虚拟输入鼠标模式以了解解决此问题的方法。
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
- 当pygame接收到鼠标输入事件时返回true。
- 在窗口(window)模式时,此方法最有用。相反,在全屏(full-screen)模式下,此方法始终返回true。
- 在
MS
Windows下,具有鼠标焦点的窗口也具有键盘焦点。但在X-Windows下,一个窗口可以接收鼠标事件,另一个窗口可以接收键盘事件。pygame.mouse.get_focused()
指示pygame窗口是否接收鼠标事件。.
pygame.mouse.
set_cursor
()
功能:设置系统鼠标光标的图像
属性:set_cursor(size, hotspot, xormasks, andmasks) -> None
- 当鼠标光标可见时,它将使用给定的位掩码数组显示为黑白位图。size是一个包含光标宽度和高度的序列。hotspot是包含光标热点位置的序列。xormasks是包含游标xor数据掩码的字节序列。andmasks是一个包含光标位掩码数据的字节序列。
- 宽度必须是8的倍数,并且掩码数组必须是给定宽度和高度的正确大小。否则会引发异常。
- 见
pygame.cursor
文件用于帮助为系统光标创建默认和自定义掩码的模块。
pygame.mouse.
get_cursor
()
功能:获取系统鼠标光标的图像
属性:get_cursor() -> (size, hotspot, xormasks, andmasks)
- 获取有关鼠标系统光标的信息。返回值与传入的参数与
pygame.mouse.set_cursor()
相同。 - 此方法对于SDL2不可用,因为SDL2不提供实现此方法的底层代码。
整理自:
- https://www.pygame.org/docs/ref/key.html
- https://www.pygame.org/docs/ref/mouse.html
这篇关于pygame中的键鼠(keymouse)模块的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!