gpt4 book ai didi

python - 为什么转义键在 Python curses 中有延迟?

转载 作者:太空狗 更新时间:2023-10-29 18:00:12 24 4
gpt4 key购买 nike

在 Python curses 模块中,我观察到按下 esc 键和 getch() 之间大约有 1 秒的延迟> 回归。其他键似乎不会出现这种延迟。为什么会发生这种情况,我该怎么办?

测试用例:

import curses
import time

def get_delay(window, key):
while True:
start = time.time()
ch = window.getch()
end = time.time()
if ch == key:
return end-start

def main(stdscr):
stdscr.clear()
stdscr.nodelay(1)

stdscr.addstr("Press ESC")
esc_delay = get_delay(stdscr, 27)

stdscr.addstr("\nPress SPACE")
space_delay = get_delay(stdscr, ord(' '))

return esc_delay, space_delay

if __name__ == '__main__':
esc_delay, space_delay = curses.wrapper(main)
print("Escape delay: {} ms".format(esc_delay*1000))
print("Space delay: {} ms".format(space_delay*1000))

结果:

Escape delay: 1001.09195709 ms
Space delay: 0.00596046447754 ms

最佳答案

为了自定义 Esc 延迟,您可以设置环境变量 ESCDELAY,curses 使用它来确定它在传递 Escape 键之前等待的时间(以毫秒为单位)。

为了在 Python 中定义此变量,您可以在调用 curses.wrapper(main) 之前调用以下函数:

def set_shorter_esc_delay_in_os():
os.environ.setdefault('ESCDELAY', '25')

如果之前没有设置,这会将环境变量设置为 25ms。

另见 man page of ncurses (搜索 ESCDELAY)。

关于python - 为什么转义键在 Python curses 中有延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27372068/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com