Как удалить окно проклятия в Python и восстановить фоновое окно? - PullRequest
2 голосов
/ 04 апреля 2010

Черт, ребята, я работаю над python curses и у меня есть начальное окно с initscr (), и я создаю несколько новых окон, чтобы перекрыть его, я хочу знать, могу ли я удалить эти окна и восстановить стандартный экран без необходимости пополнять его. Есть ли способ? Я также могу спросить, может ли кто-нибудь сказать мне разницу между окном, подокном, пэдом и подэлементом.

У меня есть этот код:

stdscr = curses.initscr()
####Then I fill it with random letters
stdscr.refresh()
newwin=curses.newwin(10,20,5,5)
newwin.touchwin()
newwin.refresh()

####I want to delete newwin here so that if I write stdscr.refresh() newwin won't appear

stdscr.touchwin()
stdscr.refresh()

####And here it should appear as if no window was created.

1 Ответ

7 голосов
/ 05 апреля 2010

Это, например, должно работать:

import curses

def fillwin(w, c):
    y, x = w.getmaxyx()
    s = c * (x - 1)
    for l in range(y):
        w.addstr(l, 0, s)

def main(stdscr):
    fillwin(stdscr, 'S')
    stdscr.refresh()
    stdscr.getch()

    newwin=curses.newwin(10,20,5,5)
    fillwin(newwin, 'w')
    newwin.touchwin()
    newwin.refresh()
    newwin.getch()
    del newwin

    stdscr.touchwin()
    stdscr.refresh()
    stdscr.getch()

curses.wrapper(main)

Это заполняет терминал 'S'; при любом нажатии клавиши окно заполняется буквой w; при следующем нажатии клавиши оно удаляет окно и снова показывает stdscr, поэтому снова все -S '; при следующем нажатии клавиши сценарий завершается, и терминал возвращается в нормальное состояние. Разве это не работает для вас? Или ты на самом деле хочешь что-то другое ...?

...