导入rlcompleter会导致终端调整失败吗?

2024-05-13 08:19:39 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑以下代码。你知道吗

import curses
import rlcompleter

def main(stdscr):
    while 1:
        c = stdscr.get_wch()

curses.wrapper(main)

当我运行这个并调整终端大小时,程序在get_wch处失败,说

Traceback (most recent call last):
  File "foo.py", line 8, in <module>
    curses.wrapper(main)
  File "/usr/lib/python3.3/curses/__init__.py", line 94, in wrapper
    return func(stdscr, *args, **kwds)
  File "foo.py", line 6, in main
    c = stdscr.get_wch()
_curses.error: no input

但是,当我删除行import rlcompleter时,会正确返回KEY_RESIZE,并且一切正常。你知道吗

怎么回事??你知道吗


Tags: 代码inpyimportgetfoomaindef
1条回答
网友
1楼 · 发布于 2024-05-13 08:19:39

我刚试过,你是http://bugs.python.org/issue2675的受害者,这是一个readline+curses问题,而不是Python问题。你知道吗

简言之,curses行为会根据readline设置的环境变量行和列进行更改。你知道吗

如果你加上

import os

os.unsetenv('LINES')
os.unsetenv('COLUMNS')

在那里的某个地方,它将消除冲突,并按照您的期望行事。如果您想要慷慨大方,您可能需要save/restore=)。你知道吗

相关问题 更多 >