如何让Python在循环中无需等待用户输入(无需按回车)?
安卓Python实现实时刷新+无回车捕获输入方案
由于你无法安装第三方模块,以下方案完全使用Python内置模块实现需求:
- 用
termios和tty模块修改终端模式,实现无需回车的单字符输入捕获 - 用
os或ANSI控制序列实现清屏 - 用
select模块实现非阻塞输入监听,避免阻塞屏幕刷新
完整代码:
import sys import time import os import termios import tty import select def get_single_char(): # 捕获单个字符(无需回车) fd = sys.stdin.fileno() old_term_settings = termios.tcgetattr(fd) try: tty.setraw(fd) char = sys.stdin.read(1) finally: termios.tcsetattr(fd, termios.TCSADRAIN, old_term_settings) return char game_state = "on" while game_state == "on": # 清屏(适配安卓终端) os.system('clear') # 若无效可替换为 print("\033c", end="") # 打印需要持续刷新的内容 print("当前游戏状态:运行中") print("按任意键可响应,按q退出") # 非阻塞监听输入,超时0.1秒不影响刷新 if select.select([sys.stdin], [], [], 0.1)[0]: input_char = get_single_char() if input_char.lower() == 'q': game_state = "off" print("游戏已退出") # 控制刷新频率 time.sleep(1)
注意事项:
- 该代码仅在安卓支持Unix终端环境的Python运行环境(如Termux、Pydroid)中有效,原生安卓Python环境可能不支持
termios等模块 select模块用于实现非阻塞输入,保证屏幕刷新不会被输入等待阻塞- 清屏命令可根据终端环境二选一,
os.system('clear')兼容性较好
内容的提问来源于stack exchange,提问作者Drew
相关产品推荐
相关产品推荐

