Python Curses addwstr () вернул ERR при добавлении строк на экран - PullRequest
0 голосов
/ 20 января 2020

Предположим, я добавляю большое количество строк на экран проклятий.

Минимальный нерабочий пример:

import curses


class MyApp(object):

    def __init__(self, stdscreen):
        self.screen = stdscreen

        for i in range(0,100):

            self.screen.addstr(str(i) + '\n')
            self.screen.refresh()

        self.screen.getch()

if __name__ == '__main__':
    curses.wrapper(MyApp)

Вышеприведенный код возвращает:

Traceback (most recent call last):
  File "test.py", line 17, in <module>
    curses.wrapper(MyApp)
  File "/usr/lib/python3.7/curses/__init__.py", line 94, in wrapper
    return func(stdscr, *args, **kwds)
  File "test.py", line 11, in __init__
    self.screen.addstr(str(i) + '\n')
_curses.error: addwstr() returned ERR
Press ENTER to continue

1) Что это за ошибка? 2) Если ошибка в том, что я добавляю слишком много строк на экран, как я могу перечислить эти записи с проклятиями? Возможно, с каким-то видом прокрутки?

1 Ответ

0 голосов
/ 21 января 2020

Мне пришло в голову, что я могу использовать try / except, чтобы определить максимальное количество строк, которые могут быть напечатаны на экране, чтобы избежать этой ошибки:

import curses


class MyApp(object):

    def __init__(self, stdscreen):
        self.screen = stdscreen

        maximum = self.maxlines()

        for i in range(maximum):

            self.screen.addstr(str(i) + '\n')
            self.screen.refresh()

        self.screen.getch()

    def maxlines(self):

        n = 0

        try:
            for i in range(100):
                self.screen.addstr(str(i) + '\n')
                n += 1

        except:
            pass

        self.screen.erase()

        return n


if __name__ == '__main__':
    curses.wrapper(MyApp)
...