python + curses中窗口的最后一个字符

Jer*_*ome 11 python ncurses

以下程序引发错误:

import curses

def test(scr):
  top = curses.newwin(1, 10, 0, 0)
  top.addstr(0, 9, "X")

curses.wrapper(test)
Run Code Online (Sandbox Code Playgroud)

看起来每当我尝试使用addstr()在窗口的最后一行的最后一列中写入一个字符时(即使它小于屏幕),它会引发错误.我不想滚动,我不关心光标的位置.我想要的只是能够在窗口的每个位置写字符.有可能吗?我怎样才能做到这一点?

Jer*_*ome 10

由于历史原因,看起来简单地用诅咒编写窗口的最后一个字符是不可能的.

我能找到的唯一解决方法是将角色写在最终目的地左侧的一个位置,并用插入物推动它.以下代码将"X"推到位置9:

top = curses.newwin(1, 10, 0, 0)
top.addstr(0, 8, "X")
top.insstr(0, 8, " ")
Run Code Online (Sandbox Code Playgroud)


Jee*_*eet 7

原来,curses实际上最终写入该最后一个位置:它只是产生一个错误之后的权利.

所以,如果你能忍受以下hack/inelegance:

#! /usr/bin/env python
import curses

def test(scr):
    top = curses.newwin(1, 10, 0, 0)
    try:
        top.addstr(0, 9, "X")
    except curses.error:
        pass

curses.wrapper(test)
Run Code Online (Sandbox Code Playgroud)

即,诱捕和忽略错误,那么代码会在设计和实施简单.