python - 将参数传递给包回调
问题描述
我正在使用Pynput包来监听键盘按键。它有一个按键回调方法,我这样定义:
def on_press(key):
print('{0} key pressed'.format(key.char))
...
if key == ord('q'):
exit(0)
return
# view.update_ui(player.get_metadata()) # how can I pass this in?
然后它连接到监听器并启动监听器:
listener = keyboard.Listener(on_press=on_press)
listener.start()
如果唯一的参数key
如 Pynput 文档中所示,这将非常有效。但是,我希望此函数采用其他参数,例如def on_press(key, view, player)
. 最pythonic的方法是什么?
解决方案
可能是工厂函数或functools.partial
.
from functools import partial
def on_press(key, view, player):
print('{0} key pressed'.format(key.char))
...
if key == ord('q'):
exit(0)
return
listener = keyboard.Listener(on_press=partial(on_press, view=my_view, player=some_player))
listener.start()
推荐阅读
- javascript - 组件道具在浅层渲染中未更新
- windows - Ngrok windows 自动启动
- sockets - 使用 CG-NAT 的两个设备之间的直接客户端-服务器连接
- react-native - 反应选择器下方的本机按钮
- c# - 具有惰性源/数据流的 TPL 数据流
- android - 顶部有 WMS 图层的地图(在线和离线) - Android
- azure - 如果我让它异步,我会破坏 Cosmos DB V1 触发器功能应用程序吗?
- php - 尽管我使用了有效的令牌,但 Laravel Passport 得到未经身份验证的响应
- javascript - 将 JSCAD / JS 输出转换为 JSON(用于three.js)
- javascript - Firefox 打不开网页