Проклятия: обновление одного окна стирает другое? - PullRequest
0 голосов
/ 14 июля 2020

У меня вот-вот проклятия. Все, что я пытаюсь написать с его помощью, каким-то образом терпит неудачу, будь то экран неправильно обновляется, пользовательский ввод не работает, или addstr не работает без причины. В последнем материале, который я пишу, я заметил интересное поведение пары windows. Вот пример, который дает тот же эффект:

import curses
import time

def main(term):
    # Window with border of 5 to edge of terminal
    win = curses.newwin(curses.LINES-10, curses.COLS-10, 5, 5)
    
    # Fill with "O", using insstr to get around the bottom-right corner problem
    for y in range(curses.LINES-10):
        win.insstr(y, 0, "O"*(curses.COLS-10))
    
    win.refresh()
    time.sleep(1)
    term.refresh()
    time.sleep(1)
    win.refresh()
    time.sleep(1)

curses.wrapper(main)

Я ожидаю, что произойдет следующее:

  1. Прямоугольник Os с пустой рамкой 5 вокруг
  2. Пустой экран
  3. Снова прямоугольник из Os

3 никогда не бывает. Означает ли обновление term, что win стерто? Если да, то разве это не отменяет суть windows как независимых структур данных? Что мне тогда делать, если я хочу повторно отобразить область текста без необходимости переписывать каждый бит с помощью вызовов addstr или insstr? Ясно, что я неправильно понял кое-что фундаментальное о проклятиях, но каждый раз, когда мне кажется, что я знаю, что это, всплывает новый поворот сюжета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...