如何在Python中检查用户是否按下了箭头键?我想要这样的东西:
if right_key.pressed():
do_some_shit()
elif left_key.pressed():
do_other_stuff()
在终端(或anacoonda提示符)中运行此命令来安装pynput
library
:
pip install pynput
并且,在你的编辑器中
from pynput import keyboard
from pynput.keyboard import Key
def on_key_release(key):
if key == Key.right:
print("Right key clicked")
elif key == Key.left:
print("Left key clicked")
elif key == Key.up:
print("Up key clicked")
elif key == Key.down:
print("Down key clicked")
elif key == Key.esc:
exit()
with keyboard.Listener(on_release=on_key_release) as listener:
listener.join()
通过使用监听器,您将不必播放无限循环。我认为这更优雅。此代码将为您提供帮助:
from pynput import keyboard
def on_press(key):
if key == keyboard.Key.up:
print('PRESSED')
if key == keyboard.Key.esc:
listener.stop()
with keyboard.Listener(on_press=on_press) as listener:
listener.join()
请注意,使用“keyboard.Key”您可以检测到所需的按键。您甚至可以重现同时按住两个键并检测组合的情况!
这是我编写的代码,但仅适用于带有窗口的 Pygame 项目 如果您需要 pygame 中的箭头,我推荐此代码:
from pygame.locals import *
import pygame
import sys
window_height = 100
window_width = 100
window = pygame.display.set_mode((window_width, window_height))
# This is the code to check if a player is pushing the arrows
while True:
for evenement in pygame.event.get():
if evenement.type == QUIT or (evenement.type == KEYDOWN and
evenement.key == K_ESCAPE):
print('QUIT')
pygame.quit()
sys.exit()
if evenement.type == KEYDOWN and evenement.key == K_RIGHT:
print("Clicked on the right arrow")
if evenement.type == KEYDOWN and evenement.key == K_LEFT:
print("Clicked on the left arrow")
if evenement.type == KEYDOWN and evenement.key == K_UP:
print("Clicked on the up arrow")
if evenement.type == KEYDOWN and evenement.key == K_DOWN:
print("Clicked on the down arrow")
您可以使用此代码:
import keyboard
import time
while True:
try:
if keyboard.is_pressed('left'):
print('You Pressed left!')
elif keyboard.is_pressed('right'):
print('You Pressed right!')
elif keyboard.is_pressed('down'):
print('You Pressed down!')
elif keyboard.is_pressed('up'):
print('You Pressed up!')
time.sleep(0.1)
except:
break