使用 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 进行必要的插入操作...
如何使用 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 进行必要的插入操作...