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

Python程序运行时检测按键触发脚本实现方案咨询

用Python内置模块实现终端内按键触发脚本

可以实现,但需依赖不同操作系统的内置模块(Python没有跨平台的全局系统级按键监听内置模块),以下分平台给出终端内的实现方案,均无需安装第三方库:

Windows 平台

使用内置的 msvcrt 模块实现非阻塞按键检测,主程序运行时可随时监听指定按键:

import msvcrt
import time

def trigger_script():
    print("\n触发了自定义脚本!")

def main_program():
    count = 0
    while True:
        print(f"主程序运行中,计数:{count}", end="\r")
        count += 1
        time.sleep(0.5)
        
        # 检测是否有按键按下
        if msvcrt.kbhit():
            key = msvcrt.getch().decode('utf-8')
            # 按下't'键触发脚本
            if key.lower() == 't':
                trigger_script()
            # 按下'q'键退出程序
            elif key.lower() == 'q':
                print("\n程序退出")
                break

if __name__ == "__main__":
    main_program()
  • msvcrt.kbhit():检查是否有按键输入
  • msvcrt.getch():获取按下的按键(不会在终端回显)

Linux/macOS(Unix-like)平台

使用内置的 termios、tty 和 select 模块修改终端属性,实现非阻塞按键检测:

import sys
import termios
import tty
import time
import select

def trigger_script():
    print("\n触发了自定义脚本!")

def main_program():
    count = 0
    fd = sys.stdin.fileno()
    old_settings = termios.tcgetattr(fd)
    
    try:
        while True:
            print(f"主程序运行中,计数:{count}", end="\r")
            count += 1
            time.sleep(0.5)
            
            # 设置终端为非阻塞模式
            tty.setcbreak(fd)
            # 检查是否有按键输入(超时0秒,非阻塞)
            if select.select([sys.stdin], [], [], 0)[0]:
                key = sys.stdin.read(1)
                if key.lower() == 't':
                    trigger_script()
                elif key.lower() == 'q':
                    print("\n程序退出")
                    break
    finally:
        # 恢复终端原有设置
        termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)

if __name__ == "__main__":
    main_program()

注意事项

  • 以上方案仅支持终端内的按键监听,无法实现系统全局按键检测(比如程序最小化后无法监听),若需全局监听必须使用第三方库(如 pynput)
  • 代码需根据操作系统区分执行,可通过 sys.platform 判断当前系统后分支调用对应逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 06:05:20