You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在appJar窗口未聚焦时捕获键盘事件?

解决appJar窗口失焦时无法检测全局按键的问题

appJar自带的bindKey方法只能在窗口获得焦点时捕获按键输入,要实现全局按键监听(窗口失焦时也能响应),需要借助第三方键盘监听库,下面提供两种可行方案:

方案一:使用keyboard库(简洁易用)

keyboard库专门用于全局键盘事件监听,语法简单,适合快速实现需求。

步骤1:安装依赖

pip install keyboard

步骤2:修改后的完整代码

import appJar
import keyboard

app = appJar.gui()

# 全局按键回调函数
def on_global_v_press():
    print(0)

# 原窗口内的按键监听(可选保留,窗口聚焦时也能触发)
def window_key_press(key):
    if key == "v":
        print(0)

# 窗口配置
app.setSize("550x350")
app.setResizable(canResize=False)
app.setBg("white", override=False, tint=False)
app.setTransparency(100)

# 绑定窗口内按键监听(可选)
app.bindKey("v", window_key_press)

# 注册全局热键:按下v时触发回调
keyboard.add_hotkey('v', on_global_v_press)

# 程序退出时清理全局监听钩子,避免残留
def cleanup_on_exit():
    keyboard.unhook_all()
    app.stop()

app.setStopFunction(cleanup_on_exit)

app.go()

注意事项

  • Windows系统下运行程序可能需要管理员权限(右键以管理员身份启动),Linux/macOS可能需要sudo执行,因为全局键盘监听需要系统级权限。

方案二:使用pynput库(功能更丰富)

pynput支持更细致的按键事件处理(如区分按下/释放、特殊按键),适合复杂场景。

步骤1:安装依赖

pip install pynput

步骤2:修改后的完整代码

import appJar
from pynput import keyboard

app = appJar.gui()

# 全局按键按下事件回调
def on_key_press(key):
    try:
        # 检测普通字符按键
        if key.char == 'v':
            print(0)
    except AttributeError:
        # 处理特殊按键(如Shift、Ctrl等,这里无需处理可忽略)
        pass

# 窗口配置
app.setSize("550x350")
app.setResizable(canResize=False)
app.setBg("white", override=False, tint=False)
app.setTransparency(100)

# 启动全局按键监听线程
listener = keyboard.Listener(on_press=on_key_press)
listener.start()

# 程序退出时停止监听
def cleanup_on_exit():
    listener.stop()
    app.stop()

app.setStopFunction(cleanup_on_exit)

app.go()

说明

  • 如果需要监听特殊按键(如ESC退出程序),可以在on_key_press或on_key_release函数中添加逻辑,比如:
    def on_key_release(key):
        if key == keyboard.Key.esc:
            cleanup_on_exit()
            return False  # 停止监听
    
    然后在创建Listener时传入on_release=on_key_release即可。

内容的提问来源于stack exchange,提问作者Ale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 16:56:05