Come faccio a cancellare una finestra maledizione in pitone e sfondo della finestra ripristino?

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

  •  24-09-2019
  •  | 
  •  

Domanda

L'inferno-o ragazzi, sto lavorando su maledizioni pitone e ho la mia finestra iniziale con initscr () e ho creare numerose finestre a sovrapporsi, voglio sapere se posso cancellare queste finestre e ripristinare lo schermo standard senza dover riempirlo. C'è un modo? Posso anche chiedere se qualcuno mi può dire la differenza tra un pad finestra, sottofinestra, pad e sub.

ho questo codice:

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.
È stato utile?

Soluzione

Questa, per esempio, dovrebbe funzionare:

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)

Questo riempie il terminale con 'S'; in qualsiasi keystoke, riempie la finestra con 'w'; alla prossima sequenza di tasti, rimuove la finestra e mostrare di nuovo lo stdscr, quindi è ancora tutto'S '; alla prossima sequenza di tasti, le estremità di script e il terminale torna alla normalità. Non è questo lavoro per te? Oppure in realtà desidera qualcosa di diverso ...?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top