Последний символ окна в python + curses
Следующая программа вызывает ошибку:
import curses
def test(scr):
top = curses.newwin(1, 10, 0, 0)
top.addstr(0, 9, "X")
curses.wrapper(test)
Похоже, что всякий раз, когда я пытаюсь использовать addstr() для записи символа в последнем столбце последней строки окна (даже когда он меньше экрана), он вызывает ошибку. Я не хочу прокручивать, меня не интересует позиция курсора. Все, что я хочу, - это писать символы в каждой позиции окна. Это вообще возможно? Как я могу это сделать?
Ответы
Ответ 1
Похоже, что простое написание последнего символа окна невозможно с проклятиями по историческим причинам.
Единственное обходное решение, которое я смог найти, заключается в написании символа на одном месте слева от его конечного адресата и нажатии его с помощью вставки. Следующий код нажимает "X" на позицию 9:
top = curses.newwin(1, 10, 0, 0)
top.addstr(0, 8, "X")
top.insstr(0, 8, " ")
Ответ 2
Оказывается, что curses
на самом деле заканчивает запись в эту последнюю позицию: он сразу вызывает ошибку.
Итак, если вы можете жить со следующим взломом /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)
i.e, захват и игнорирование ошибки, тогда код будет намного проще как в дизайне, так и в реализации.