Pygame的KEYDOWN和KEYUP


pygame.KEYDOWN 按下鍵盤時

pygame.KEYUP 釋放鍵盤時


一、基本資料


pygame.key

pygame模塊與鍵盤一起使用
pygame.key.get_focused 如果顯示器正在從系統接收鍵盤輸入,則為true
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 開始處理IME成分
pygame.key.stop_text_input 停止處理IME成分
pygame.key.set_text_input_rect 控制候選人名單的位置

此模塊包含用於處理鍵盤的功能。

pygame.event與事件和隊列交互pygame的模塊隊列中獲得pygame.KEYDOWNpygame.KEYUP 當按下和釋放鍵盤按鈕事件。這兩個事件都有 keymod屬性。

  • key:一個整數ID,代表鍵盤上的每個鍵
  • mod 事件發生時處於按下狀態的所有修改鍵的位掩碼

pygame.KEYDOWN事件具有其他屬性unicode scancode

  • unicode:一個字符串,即輸入的完全翻譯后的字符,其中考慮了shift和撰寫鍵
  • scancode:特定於平台的鍵代碼,可能因鍵盤而異,但對於選擇諸如多媒體鍵之類的奇怪鍵非常有用

pygame 2.0.0的新功能:pygame.TEXTINPUT事件優先於的unicode屬性pygame.KEYDOWN該屬性text包含輸入。

以下是用於表示鍵盤按鍵的所有常量(來自pygame.localspygame常量的列表

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

鍵盤還有一個修飾符狀態列表(來自pygame.localspygame常量),可以通過將它們按位進行“或”運算來組合。

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

修飾符信息包含在事件mod屬性中 屬性是事件發生時處於按下狀態的所有修改鍵的位掩碼。修飾符信息可以使用按位AND進行解碼(除外,應使用equals進行比較)。例如:pygame.KEYDOWNpygame.KEYUPmodKMOD_NONE==

for event in pygame.event.get():
    if event.type == pygame.KEYDOWN or event.type == pygame.KEYUP:
        if event.mod == pygame.KMOD_NONE:
            print('No modifier keys were in a pressed state when this '
                  'event occurred.')
        else:
            if event.mod & pygame.KMOD_LSHIFT:
                print('Left shift was in a pressed state when this event '
                      'occurred.')
            if event.mod & pygame.KMOD_RSHIFT:
                print('Right shift was in a pressed state when this event '
                      'occurred.')
            if event.mod & pygame.KMOD_SHIFT:
                print('Left shift or right shift or both were in a '
                      'pressed state when this event occurred.')
pygame.key. get_focused
如果顯示器正在從系統接收鍵盤輸入,則為true
get_focused()->布爾

True當顯示窗口具有系統的鍵盤焦點時返回如果顯示器需要確保它不會失去鍵盤焦點,則可以使用pygame.event.set_grab()控件與其他應用程序共享輸入設備來獲取所有輸入。

評論2
pygame.key. get_pressed
獲取所有鍵盤按鈕的狀態
get_pressed()->布爾

返回一系列布爾值,它們表示鍵盤上每個鍵的狀態。使用鍵常量值索引數組。True 值表示該按鈕被按下。

注意

 

使用此功能獲取按鈕列表不是處理用戶輸入文本的正確方法。無法知道按鍵的順序,並且在兩次調用之間無法完全注意到快速按下的按鍵pygame.key.get_pressed()也沒有辦法將這些按下的鍵轉換為完全轉換的字符值。請參閱pygame模塊pygame.KEYDOWN事件以pygame.event與事件進行交互,並為此功能排隊。

評論6
pygame.key. get_mods
確定哪些修飾鍵被保留
get_mods()->整數

返回一個單個整數,該整數表示所持有的所有修飾鍵的位掩碼。使用按位運算符可以測試是否按下了特定的 修飾鍵

評論6
pygame.key. set_mods
臨時設置按下哪些修改鍵
set_mods(int)->無

創建 要強加給程序修飾鍵常量的位掩碼

pygame.key. set_repeat
控制如何重復按住鍵
set_repeat()->無
set_repeat(delay)->無
set_repeat(delay,interval)->無

啟用鍵盤重復功能后,按下這些鍵將生成多個pygame.KEYDOWN事件。delay參數是pygame.KEYDOWN將發送第一個重復事件之前的毫秒數在那之后,另一個pygame.KEYDOWN事件將每interval 毫秒發送一次如果delay提供了一個interval值,但沒有提供一個值或該值為0,interval則會將設置為與相同的值 delay

要禁用重復鍵,請不帶任何參數或將其delay 設置為0來調用此函數

當pygame初始化時,按鍵重復被禁用。

籌款: ValueError-如果delayinterval<0

在pygame 2.0.0中更改:ValueError現在,pygame.error如果delayinterval<0,引發A (而不是 

評論9
pygame.key. get_repeat
查看如何重復按住鍵
get_repeat()->(延遲,間隔)

獲取delayinterval鍵盤重復值。有關這些值的說明,請參考 pygame.key.set_repeat()控制如何重復按住鍵

pygame 1.8的新功能。

pygame.key. name
獲取密鑰標識符的名稱
名稱(鍵)->字符串

從鍵盤按鈕ID常量獲取按鈕的描述性名稱。

評論7
pygame.key. key_code
從密鑰名稱獲取密鑰標識符
key_code(名稱=字符串)-> int

從密鑰的描述性名稱中獲取密鑰標識符代碼。這將返回與K_ *鍵碼之一匹配的整數。例如:

>>> 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-如果密鑰名稱未知。
  • NotImplementedError-如果與SDL 1一起使用

pygame 2.0.0的新功能。

pygame.key. start_text_input
開始處理IME成分
start_text_input()->無

開始接收pygame.TEXTEDITINGpygame.TEXTINPUT 處理IME的事件。

pygame.TEXTEDITING當啟動或更改IME合成時,會收到一個事件。它包含組合物textlength和編輯start位置在組合物內(屬性 textlength以及start,分別地)。當提交組合(或接收到非IME輸入)時,將pygame.TEXTINPUT生成一個事件。

正常pygame.TEXTINPUT事件不依賴於此。

pygame 2.0.0的新功能。

pygame.key. stop_text_input
停止處理IME成分
stop_text_input()->無

停止接收pygame.TEXTEDITINGpygame.TEXTINPUT 處理IME的事件。

正常pygame.TEXTINPUT事件不依賴於此。

pygame 2.0.0的新功能。

pygame.key. set_text_input_rect
控制候選人名單的位置
set_text_input_rect(Rect)->無

這將設置用於輸入法輸入法的矩形。如果支持,它將控制候選列表的打開位置。

正常pygame.TEXTINPUT事件不依賴於此。

pygame 2.0.0的新功能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM