使用 Python curses 将 UTF8 字符写入屏幕的最后位置

Write an UTF8 character to the last position of the screen with Python curses

如何使用 Python 的 curses 模块将 UTF8 字符写入屏幕的最后位置(右下角)?

任务一开始可能看起来很直接,但事实并非如此。首先,Python2.x是使用curses输出UTF-8的incapable,所以我们这里假设Python3.x。有两个明显的选择:

screen.insch(lines - 1, columns - 1, u"\u00a9")

这给出了 OverflowError: byte doesn't fit in chtype。无赖。怎么样:

screen.addch(lines - 1, columns - 1, u"\u00a9")

虽然这有效,但它也会滚动屏幕。所以我们实际上写到了倒数第二行的最后一列。 还是最后一行的最后一栏,没有我们的性格

对于大多数职位,addch 工作得很好,但对于最后一个职位则不然。 insch 对于 UTF8 来说看起来刚刚坏了。

很简单:

  • 使用scrollok
  • 关闭滚动
  • 移到右下角
  • 添加addch
  • 的字符
  • 捕获(并忽略)由于移动过 lower-right 角失败而导致的异常。

ncurses 进行必要的插入操作...