请考虑以下代码。
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
并且一切正常。
发生了什么事?
答案 0 :(得分:1)
我刚刚尝试过这个问题,而你是http://bugs.python.org/issue2675的受害者,这更像是一个readline + curses问题,而不是Python问题。
简而言之,curses行为会根据环境变量LINES和COLUMNS而变化,这些变量就是读取集。
如果你添加
import os
os.unsetenv('LINES')
os.unsetenv('COLUMNS')
在那里的某个地方,它将消除冲突并按照您的预期行事。如果你想要慷慨,你可能想要保存/恢复=)。