¿Cómo elimino una ventana maldición en Python y restaurar la ventana de fondo?

StackOverflow https://stackoverflow.com/questions/2575409

  •  24-09-2019
  •  | 
  •  

Pregunta

Infierno-o chicos, estoy trabajando en maldiciones pitón y tengo mi ventana inicial con initscr () y crear varias nuevas ventanas para que se superponen, me gustaría saber si puedo eliminar estas ventanas y restaurar la pantalla estándar sin tener que volver a llenarlo. ¿Hay alguna manera? También puedo preguntar si alguien me puede decir la diferencia entre una almohadilla de ventana, ventana secundaria, almohadilla y sub.

Tengo este código:

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.
¿Fue útil?

Solución

Esto, por ejemplo, debería funcionar:

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)

Esto llena el terminal con 'S'; en cualquier keystoke, se llena la ventana con 'w'; en la siguiente pulsación de tecla, se elimina la ventana y mostrar la stdscr de nuevo, por lo que es nuevo todo-'S '; en la siguiente pulsación de tecla, los extremos de script y el terminal vuelve a la normalidad. No es éste el trabajo para usted? ¿O es que realmente quiere algo diferente ...?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top