Python curses,第 3 部分:处理窗口化内容

这是关于在 Python 中使用curses库进行文本绘制的系列教程的第三部分(也是最后一部分)。

  • 装饰窗口:可使用window.box()window.border(…)函数用自定义值或默认“框”装饰窗口,如创建 5×5 红色窗口并在每次按键时交替显示和清除边框。此代码在 SSH 连接中运行,屏幕会自动清除,边框会裁剪窗口内部,window.border(…)函数中的任何字符都可用于边框。代码通过等待按键来控制,按下QShift+Q可退出程序,注意按箭头键可能会跳过迭代。
  • 更新窗口内容:与传统图形窗口程序类似,curses窗口的文本内容可更改,更改前需先清除旧内容。示例展示了一个居中的数字时钟,使用 Python 列表存储数字和符号的大版本,通过putChar(…)函数将字符映射到对应的列表并显示在窗口中。代码首先检查终端窗口大小是否足够,然后创建多个子窗口显示时钟的各个部分,通过datetime模块获取当前时间并更新窗口内容。在非阻塞模式下,使用hoursLeftWindow.nodelay(True)使窗口非阻塞,通过getch()函数获取按键,根据按键情况更新时钟。退出时使用putChar(…)函数在每个窗口中打印空白字符来清理屏幕,并将窗口对象设置为None
  • 进一步探索:此三部分介绍仅触及curses模块的表面,有了这个基础,即使对于新手开发者,创建基于文本的 Python 应用程序的健壮用户界面也变得可行。curses模块提供了移动、调整大小和补偿终端窗口大小变化的机制,甚至复杂的基于文本的游戏也可使用该模块或其底层ncursesC/C++库实现。ncurses模块的完整文档可在 Python 文档的“curses — Terminal handling for character-cell displays”部分找到,由于 Pythoncurses模块使用的语法与底层ncursesC/C++库“足够接近”,也可参考这些库的手册页和参考资源获取更多信息。
阅读 5
0 条评论