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

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

我在使用python curses模块的Windows时遇到了麻烦。我已经使用找到here的轮子来获取我在我的桌面上运行的脚本。现在,脚本只使用screen.border()方法在窗口周围显示边框,并在显示器的整个宽度上显示另一条线。我使用以下方法在屏幕上显示栏:

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

我在一个循环中运行它,每次重置维度并使用getch检查curses.KEY_RRESIZE然后运行screen.erase()以允许我调整窗口大小并且脚本仍然可以工作。当我在安装了python 3.7的车轮后在Windows上运行它(win32,因为amd64给出了一个错误)我发现screen.getmaxyx()总是返回相同的值:初始屏幕大小,当我调整窗口大小时从未改变。如果有人知道解决这个问题的方法,或者我根本无法在Windows上使用curses,这是Windows的替代库,我感谢任何帮助。谢谢!

python-3.x windows curses
2个回答
1
投票

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


0
投票

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

python包装器不使用它。

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