python - 关于python中鼠标和键盘事件的问题
问题描述
from pynput.keyboard import Key, Controller as KeyboardController
from pynput.mouse import Button, Controller as MouseController
from pynput.keyboard import Key, Listener
keyboard = KeyboardController()
mouse = MouseController()
def on_press(key):
if key.char == 'q':
print(mouse.position)
return True
# Collect events until released
with Listener(
on_press=on_press) as listener:
listener.join()
如果我按下字母 q,我制作了这个简单的脚本来返回鼠标的位置。它工作正常,直到我按下不是字符的东西,例如 Enter 键。我一直在四处寻找,但找不到实现如果“单击某些按钮”来做到这一点的好方法。我怎样才能解决这个问题?
解决方案
显然,返回的键对象on_press
没有char
属性,除非您实际按下了字符键。因此,您必须检查该属性是否存在。您可以使用hasattr做到这一点:
from pynput.keyboard import Key, Controller as KeyboardController
from pynput.mouse import Button, Controller as MouseController
from pynput.keyboard import Key, Listener
keyboard = KeyboardController()
mouse = MouseController()
def on_press(key):
if hasattr(key, 'char'):
if key.char == 'q':
print(mouse.position)
return True
# Collect events until released
with Listener(
on_press=on_press) as listener:
listener.join()
推荐阅读
- ruby-on-rails - NoMethodError(nil:NilClass 的未定义方法“user_id”):
- r - 将函数应用于 R 中的过滤行
- java - java项目中DDD聚合的正确大小(spring boot)
- javascript - '错误:对象作为 React 子级无效(找到:带有键 {results,info} 的对象)'
- verilog - 在正边沿和负边沿设置寄存器时出现“错误:网络上有多个驱动程序”
- javascript - 检查 Javascript 对象中是否存在属性
- android - 导入 ViewDataBinding 后 invalidateAll 未解决
- postgresql - 了解 Postgres 索引 - 仍然很慢
- javascript - 如何在 HTML 中的 google.script.run() onClick 命令中传递多个参数
- java - 在没有所有方法的情况下实现的接口。为什么不编译错误?