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

Ubuntu 22.04下实现按键触发方法调用应使用哪个Linux库?

在Ubuntu 22.04下实现按键触发Python方法的方案

修正你现有的keyboard库代码

你当前的代码存在两处问题:一是导入keyboard模块后误用了未定义的key对象;二是无限轮询会导致CPU占用过高。修正后该库可在Linux下正常工作:

首先安装库:

pip install keyboard

修正后的代码:

import keyboard
import time

my_list = ["a","b","c"]  # 避免用`list`作为变量名,会覆盖内置类型

while True:
    try:
        if keyboard.is_pressed('i'):
            print("执行index操作结果:", my_list.index("a"))
            time.sleep(0.2)  # 防止短时间内重复触发
        elif keyboard.is_pressed('c'):
            print("执行count操作结果:", my_list.count("a"))
            time.sleep(0.2)
        time.sleep(0.01)  # 降低CPU占用率
    except Exception as e:
        print(f"错误详情: {e}")
        break

更高效的事件驱动方案:使用pynput库

pynput是跨平台的输入监听库,在Linux下稳定性优异,采用事件驱动模式(无需轮询),资源占用更低。

安装:

pip install pynput

示例代码:

from pynput.keyboard import Listener, Key

my_list = ["a","b","c"]

def on_press(key):
    try:
        if key.char == 'i':
            print("执行index操作结果:", my_list.index("a"))
        elif key.char == 'c':
            print("执行count操作结果:", my_list.count("a"))
    except AttributeError:
        # 忽略Ctrl、Shift等特殊按键
        pass

def on_release(key):
    # 按Esc键退出监听
    if key == Key.esc:
        return False

# 启动监听器
with Listener(on_press=on_press, on_release=on_release) as listener:
    listener.join()

无需额外安装:使用标准库curses

如果不想依赖第三方库,Python内置的curses库可在终端环境下实现按键监听,适合纯终端场景。

示例代码:

import curses

my_list = ["a","b","c"]

def main(stdscr):
    curses.curs_set(0)  # 隐藏光标
    stdscr.nodelay(True)  # 设置非阻塞模式

    while True:
        key = stdscr.getch()
        if key == ord('i'):
            print("执行index操作结果:", my_list.index("a"))
        elif key == ord('c'):
            print("执行count操作结果:", my_list.count("a"))
        elif key == ord('q'):
            break
        curses.napms(10)  # 降低CPU占用

curses.wrapper(main)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 23:52:35