如何在Python中重新初始化readline模块?

问题描述 投票:0回答:1

在我的 python 程序中,我需要像这样捕获 WINCH 信号:

def WinResize(num, stack):
    # DO SOME STUFF HERE

signal.signal(signal.SIGWINCH, WinResize)

问题在于 readline 没有收到信号,并且其窗口的内部视图是错误的。我尝试了一个技巧,使用

readline.set_completer(readline.get_completer())

在 WinResize 函数的末尾,它部分解决了我的问题,但没有完全解决。通过这个解决方案,如果我继续提供输入直到它进入换行符,则新的大小将在读取行上更新。直到那时,它的内部尺寸仍为之前的尺寸。

如果我没有收到信号,readline 将按预期工作。我想彻底解决这个问题。

这是演示该问题的视频: https://streamable.com/1tja9g

python signals readline
1个回答
0
投票

经过无数次实验,我终于找到了解决问题的方法。当我在设置 WINCH 信号处理程序后导入 readline 模块时,它会按预期工作。但我不知道为什么。

© www.soinside.com 2019 - 2024. All rights reserved.