Текст, добавленный в Новое окно, не отображается в Curses - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь добавить окно и текст в этом окне с проклятиями, используя this и this:

window.addstr("This is a text in a window")

Код:

class View:
    def __init__(self, ):
        self.stdscr = curses.initscr()
        curses.noecho()
        curses.cbreak()
        self.stdscr.keypad(True)
        # -----------------
        self.add_window_and_str()
        self.add_str()
        # -----------------
        self.stdscr.getkey()
        curses.endwin()

    def add_str(self): #just text in standart screen
        self.stdscr.addstr("test")
        self.stdscr.refresh()

    def add_window_and_str(self):
        scr_limits = self.stdscr.getmaxyx()
        win = curses.newwin(scr_limits[0] - 10, scr_limits[1] - 10, 5, 5)
        win.addstr("Example String")
        win.refresh()
        self.stdscr.refresh()

текст, добавленный с self.add_str, виден, а «Строка примера» - нет.Как я могу манипулировать окнами, чтобы сделать этот текст видимым?

1 Ответ

0 голосов
/ 11 мая 2018

При инициализации на стандартном экране имеется ожидающее обновление (для очистки экрана).Вызов refresh в конце add_window_and_str делает это, перезаписывая вывод win.addstr.Вы можете переместить этот вызов до первого вызова на add_window_and_str.После этого изменения в stdscr появятся в частях экрана за пределами вашего окна.

Есть еще одна проблема: вызов getch обновляет связанное окно.Обычно программы организованы так, что getch ассоциируется с любым окном, которое вы хотели бы держать «сверху», чтобы их обновления не были скрыты другими окнами.Если вы вернете переменную win из add_window_and_str, вы можете использовать это окно с getch.

...