Python 诅咒 getmaxyx() 总是在 windows 上返回相同的值

Python curses getmaxyx() always returning same value on windows

我在使用 windows 的 python curses 模块时遇到问题。我已经使用找到 here 的滚轮来获取我在桌面上 mac 到 运行 上编写的脚本。目前,该脚本仅使用 screen.border() 方法在 window 周围显示一个边框,并在显示的整个宽度上显示另一条线。我用这个在屏幕上显示了这个栏:

dimensions = screen.getmaxyx()    
screen.addstr(dimensions[0]/2, 0, "-"*dimensions[1])

我 运行 这是一个循环,每次都重置尺寸并使用 getch 检查 curses.KEY_RRESIZE 然后 运行ning screen.erase() 让我调整 window 的大小,脚本仍然有效。在为 python 3.7 安装轮子后,当我在 windows 上 运行 这个时(win32 因为 amd64 出现错误)我发现 screen.getmaxyx() 总是返回相同的值: 初始屏幕尺寸,并且在我调整 window 大小时从未改变。如果有人知道解决此问题的方法,或者如果我根本无法在 windows(windows 的替代库)上使用 curses,我将不胜感激。谢谢!

那个 ("on windows") 可能正在使用 PDCurses,它没有办法自动更新屏幕尺寸(例如,与基于 POSIX 的 ncurses 的 SIGWINCH 处理程序一样).相反,它检测 window 大小的变化,应用程序可以调用 is_termresized 来决定是否告诉库更改数据结构以匹配使用 resize_term.

python 包装器不使用它。

获得KEY_RESIZE后调用resize_term(0, 0)。 (我不确定确切的 Python 映射。)