0

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

这项任务一开始可能看起来很简单,但事实并非如此。首先,Python 2.x无法使用 curses 输出 UTF-8,所以我们在这里假设 Python 3.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工作得很好,但不适用于最后一个。inschUTF8 看起来刚刚坏了。

4

1 回答 1

1

这很简单:

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

ncurses 对插入进行必要的处理...

于 2017-01-29T17:11:32.530 回答