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

2024-06-24 13:00:59 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

综上所述,我目前在使用python诅咒库时遇到了几个问题,我将其用作终端的低级接口

当我尝试调整终端的大小时会出现问题。从代码中可以看到(见下文),我在主循环中处理终端的大小调整,调用my curses窗口的getmaxyx()方法,并相应地重新绘制屏幕上的内容

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

此外,我的“curses应用程序”在MacOS上运行良好,但在windows上完全崩溃(即使在安装windows curses之后)

为了处理这个问题,我尝试使用有福的库重新编写低级别的interfice。它解决了windows崩溃问题,但闪烁仍然存在

我想不出是什么问题

对于那些希望帮助我的人,下面是项目的github页面:Terminal GUI on GitHub

先谢谢你


Tags: 代码终端屏幕堆栈架构mywindows编程
1条回答
网友
1楼 · 发布于 2024-06-24 13:00:59

有了诅咒,至少有三件事需要寻找:

  • ncurses可以处理SIGWINCH(PDCurses可以不处理)

  • 某些Python配置会干扰ncurse接收SIGWINCH。如果您的程序从未收到KEY_RESIZE(它没有检查…),那么是时候为Python提交一个bug报告来修复它了

  • 有些程序不主动读取键盘输入(如果KEY_RESIZE不是读取,ncurses将不会更新屏幕大小。这将导致程序崩溃。

相关问题 更多 >