Python之pygame学习键盘事件操作(9)

您所在的位置:网站首页 pygame事件类型 Python之pygame学习键盘事件操作(9)

Python之pygame学习键盘事件操作(9)

2024-06-03 22:47| 来源: 网络整理| 查看: 265

pygame键盘事件操作

什么是事件呢?按下键盘某个按键,鼠标移动,包括点击关闭按钮都可以算是事件操作。

pygame中事件模块是pygame.event,官方说法是用于与事件和队列进行交互。

不用学习太多,主要学习下常用即可;

pygame.event.get

从队列中获取事件

之前我们就一直在用事件处理,那就是我们每次代码都带上的退出;

代码语言:javascript复制for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() exit(0)

如果没有任何输入的情况下 event.get()返回的是个空列表

我们点击关闭pygame的窗口返回的事件是

[]

我们可以 遍历列表获取内部数据,

可以查看数据的类型是否是pygame的某种类型,比如退出

如果是这种类型的话,我们可以执行相对于的操作。

我们来说下键盘操作

代码语言:javascript复制elif event.type == pygame.KEYDOWN : if event.key == pygame.K_UP: y -= 1

在事件中判断类型是否是 pygame.KEYDOWN

判断键位是否是我们需要的那个键位

执行对应的操作

但是上面这中操作有个问题就是,我们每次按下这个键之后只能执行一次操作;

我们要移动对象的时候想要按下后连续移动,

我们就需要用到 pygame.key 这个是在pygame 2.0的新功能

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

按下和释放键盘按钮时,事件队列获取pygame.KEYDOWN和pygame.KEYUP事件。两个事件都有一个键属性,它是表示键盘上每个键的整数ID。

该pygame.KEYDOWN事件具有其他属性unicode和 scancode。unicode表示单个字符串,即输入的完全翻译字符。这考虑了移位和组合键。scancode表示特定于平台的密钥代码。这可能与键盘不同,但对于像多媒体键这样的奇怪键的键选择很有用。

pygame.KEYDOWN。该属性text包含输入。

有许多键盘常量,它们用于表示键盘上的键。以下是所有键盘常量的列表:

代码语言:javascript复制KeyASCII ASCII Common Name 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

键盘还有一个修饰符状态列表,可以通过按位对它们进行组合来组装。

代码语言:javascript复制KMOD_NONE, KMOD_LSHIFT, KMOD_RSHIFT, KMOD_SHIFT, KMOD_CAPS, KMOD_LCTRL, KMOD_RCTRL, KMOD_CTRL, KMOD_LALT, KMOD_RALT, KMOD_ALT, KMOD_LMETA, KMOD_RMETA, KMOD_META, KMOD_NUM, KMOD_MODE

获取所有键盘按钮的状态

pygame.key.get_pressed()——返回一系列布尔值,表示键盘上每个键的状态。使用键常量值来索引数组。True值表示按下该按钮。

我们可以判断这个按键是否为真,如果为真则表示按下这个按键

代码语言:javascript复制key_list = pygame.key.get_pressed() if key_list[pygame.K_UP]: y -= 1 elif key_list[pygame.K_DOWN]: y += 1 elif key_list[pygame.K_LEFT]: x -= 1 elif key_list[pygame.K_RIGHT]: x += 1

这样的话,我们按下某个按键不松开的时候就可以一直移动某个对象了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3