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

时间:2011-08-15 08:50:15

标签: python ncurses

以下程序引发错误:

import curses

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

curses.wrapper(test)

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

2 个答案:

答案 0 :(得分:9)

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

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

top = curses.newwin(1, 10, 0, 0)
top.addstr(0, 8, "X")
top.insstr(0, 8, " ")

答案 1 :(得分: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)

,即捕获并忽略错误,然后代码在设计和实现方面都将更多更简单。

相关问题