我正在尝试制作一个程序,该程序输出按键事件作为对另一个键盘事件的响应。如何使用条件语句中按下的键的特定值?我尝试的代码似乎完全跳过了条件语句。
最初尝试[if key == '1':],
,然后对[if key == 1:]
感到厌倦。还尝试了各种将[key]分配给变量的方法。还尝试了[print('2')]而不是使用[pyautogui.typewrite('2')]
。试图将代码同时放在on_press(key)和on_release(key)中。
`
import pyautogui
from pynput.keyboard import Key, Listener
def on_press(key):
print('{0} pressed'.format(key))
def on_release(key):
print('{0} release'.format(key))
k = format(key)
if k == '1': #THIS IS THE PART I CAN'T GET TO WORK
pyautogui.typewrite('2', 0.5)
if key == Key.esc:
# Stop listener
return False
# Collect events until released
with Listener(
on_press=on_press,
on_release=on_release) as listener:
listener.join()
`
预期每当我在键盘上按“ 1”时输出“ 2”(除了keypress和keyrelease事件的输出)。按下“ 1”的输出无效。
答案 0 :(得分:0)
您可以使用keyboard
库来处理/创建关键事件。
while True:
try:
if keyboard.is_pressed('1'):
print('{} is pressed'.format(1))
break
else:
pass
except:
break
以上代码一直运行到收到1
作为按键为止。按下键后,1 is pressed
将被打印。
您还可以进一步使用此库的其他功能,以便甚至也可以检测到按键按下情况。
答案 1 :(得分:0)
您的key
/ on_press
接收到的on_release
参数不是字符串,而是Key / KeyChar对象,这就是为什么您不能直接将它与字符串进行比较。
要访问键盘输入字符,请改用key.char
:
def on_press(key):
print("pressed '{}'".format(key.char))
请查看pynput文档中有关capture non letter keys的示例代码。