curses.panel

Oleg Broytmann phd at phd.fep.ru
Wed Apr 25 04:39:24 EDT 2001


Hi!

   Thank you very much for your help.

On Tue, 24 Apr 2001, Jake Wasserman wrote:
> Instead of using stdscr.subwin() you need to make a new window using
> curses.newwin() and the same arguments get what you want.  You also need

   I tried this before mailing the question - but failed. For example, the
following program works (draws 2 windows) with stdscr.subwin, but does not
draw them with curses.newwin. Did I miss something?

import curses

def make_win(stdscr, h,l, y,x, str):
   win = stdscr.subwin(h,l, y,x) # ???
   win.erase()
   win.box()
   win.addstr(2, 2, str)
   return win

def test(stdscr):
   curses.curs_set(0)
   stdscr.box()
   stdscr.addstr(2, 2, "windows everywhere")
   win1 = make_win(stdscr, 10,12, 5,5, "Window 1")
   win2 = make_win(stdscr, 10,12, 8,8, "Window 2")
   stdscr.refresh(); c = stdscr.getch()

if __name__ == '__main__':
   curses.wrapper(test)


> an extra curses.panel.update_panels() inside the for loop that moves
> panel2.

   Yes, and much more important I need to call it BEFORE top()! This
program works finally; and - surprise - it works with curses.newwin! I do
not understand why it works and previous program does not.

from time import sleep
import curses, curses.panel

def make_panel(h,l, y,x, str):
   win = curses.newwin(h,l, y,x)
   win.erase()
   win.box()
   win.addstr(2, 2, str)

   panel = curses.panel.new_panel(win)
   return win, panel

def test(stdscr):
   curses.curs_set(0)
   stdscr.box()
   stdscr.addstr(2, 2, "panels everywhere")
   win1, panel1 = make_panel(10,12, 5,5, "Panel 1")
   win2, panel2 = make_panel(10,12, 8,8, "Panel 2")
   curses.panel.update_panels(); stdscr.refresh()
   sleep(1)

   panel1.top(); curses.panel.update_panels(); stdscr.refresh()
   sleep(1)

   for i in range(20):
      panel2.move(8, 8+i)
      curses.panel.update_panels(); stdscr.refresh()
      sleep(0.1)

   sleep(1)

if __name__ == '__main__':
   curses.wrapper(test)

Oleg.
----
     Oleg Broytmann            http://phd.pp.ru/            phd at phd.pp.ru
           Programmers don't die, they just GOSUB without RETURN.





More information about the Python-list mailing list