这是我关于堆栈溢出的第一篇文章,所以我希望我做得正确。
我目前正在使用 python应用程序的终端用户界面。我知道那里有很多现成的库,例如npyscreen,但我想创建一个库作为编程练习。特别是,我想玩一些建筑模式来学习它们。
所有这些,我目前在使用 python curses库时遇到一些问题,因为我正在使用与终端的低层接口。
当我尝试调整终端大小时会出现问题。从代码中可以看到(见下文),我在主循环中处理终端的大小调整,调用curses窗口的getmaxyx()()方法,并相应地重画屏幕上的内容。
问题是,当我尝试调整终端大小时,屏幕似乎闪烁。
此外,我的“ curses应用程序”在MacOS上运行良好,但在Windows上完全崩溃(即使在安装Windows curses之后)。
为解决这个问题,我尝试使用 blessed 库重新编写底层接口。它解决了Windows崩溃问题,但闪烁现象仍然存在。
我不知道是什么问题。
在那些希望帮助我的人之前,请遵循以下项目的 github页面:Terminal GUI on GitHub
谢谢。
答案 0 :(得分:1)
随着诅咒的出现,至少有3件事情要寻找:
ncurses可以处理SIGWINCH
(可能无法使用PDCurses)
某些Python配置会干扰ncurses接收SIGWINCH
。如果您的程序从未收到KEY_RESIZE
(它不检查...),那么该是为Python提交错误报告以解决此问题的时候了。
某些程序不会主动读取键盘输入(如果KEY_RESIZE
不是 read ,则ncurses不会更新屏幕尺寸。那样会使程序崩溃。