Folgendes Programm erzeugt zwei Panels, dann wird das zweite Panel ueber das erste bewegt und dann wieder beiseite. Ich haette natuerlich gern, dass das der Inhalt des ersten Panelfensters zum Schluss wieder vollstaendig zu sehen ist, bekomme das aber nicht hin.
hide(), show() und refresh() (auf den Unterfenstern) bewirken nichts, mit panels.update_panels() sehe ich die Fensterinhalte mehrfach auf dem Bildschirm
Oder muss ich den Inhalt per Hand nochmal neu in das Fenster reinmalen? Das kann doch nicht der Sinn der Sache sein?
Hier das Programm:
Code: Alles auswählen
#! /usr/bin/env python
import curses;
from curses import panel;
import time;
def init(mainwin):
curses.curs_set(0);
if curses.has_colors():
curses.init_pair(1, curses.COLOR_WHITE, curses.COLOR_BLUE);
curses.init_pair(2, curses.COLOR_BLACK, curses.COLOR_CYAN);
curses.init_pair(3, curses.COLOR_BLACK, curses.COLOR_WHITE);
mainwin.attrset(curses.color_pair(1));
mainwin.bkgdset(' ', curses.color_pair(1));
mainwin.clear();
######################################################################
def main(mainwin):
init(mainwin);
mainwin.refresh();
#Ein Panel:
win = mainwin.subwin(3, 15, 4, 4);
win.attrset(curses.color_pair(2));
win.bkgdset(' ', curses.color_pair(2));
win.clear();
win.addstr("Alle Voeglein sind schon da,");
win.refresh();
panel1 = panel.new_panel(win);
#Noch ein Panel:
win = mainwin.subwin(3, 15, 4, 20);
win.bkgdset(' ', curses.color_pair(3));
win.attrset(curses.color_pair(3));
win.clear();
win.refresh();
panel2 = panel.new_panel(win);
mainwin.refresh();
time.sleep(1);
#Ins zweite Panel was reinschreiben:
panel2.window().addstr("alle Voeglein, alle! ");
panel2.window().refresh();
mainwin.refresh();
time.sleep(1);
#Zweites Panel bewegen:
panel2.move(5, 15);
mainwin.refresh();
time.sleep(1);
#Zweites Panel bewegen:
panel2.move(6, 20);
mainwin.refresh();
time.sleep(1);
######################################################################
# Hauptprogramm #
######################################################################
curses.wrapper(main);