Python调整终端大小时会诅咒窗口闪烁

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

这是我关于堆栈溢出的第一篇文章,所以我希望我做得正确。

我目前正在使用Python应用程序的终端用户界面。我知道那里有很多现成的库,例如npyscreen,但我想创建一个库作为编程练习。特别是,我想玩一些建筑模式来学习它们。

所有这些,我目前在使用[[python curses库时遇到一些问题,我正在使用与终端的低层接口。

当我尝试调整终端大小时会出现问题。从代码中可以看到(见下文),我在主循环中处理终端的大小调整,

调用curses窗口的getmaxyx()()方法

并相应地重画屏幕上的内容。

问题是,当我尝试调整终端大小时,屏幕似乎闪烁。

此外,我的“ curses应用程序”在MacOS上运行良好,但

完全在Windows上崩溃

(即使在安装Windows curses之后)。 为了解决这个问题,我尝试使用

blessed

库来重写底层接口。它解决了Windows崩溃的问题,但闪烁仍然存在。我不知道是什么问题。

出现在那些希望帮助我的人面前,这里是项目的

github页面

Terminal GUI on GitHub先谢谢您。
python curses python-curses
1个回答
0
投票
使用

curses,至少有3件事情要寻找:

  • ncurses可以处理SIGWINCH(可能无法使用PDCurses)
  • 一些Python配置会干扰ncurses接收SIGWINCH。如果您的程序从未收到KEY_RESIZE(它没有检查...),那么该是时候为Python提交错误报告了,以解决此问题。
  • [某些程序不会主动读取键盘输入(并且如果KEY_RESIZE不是

    read

,则ncurses不会更新屏幕尺寸。这会使程序崩溃。] >
© www.soinside.com 2019 - 2024. All rights reserved.