#!/usr/bin/env pythonAhora comprendo cómo funciona el "curses.wrapper()". Cuando se llama a la función 'main' lo hace con la pantalla principal "stdscr = curses.initscr()" ya inicializada.
# -*- coding: utf-8 -*-
import curses, sys, traceback, os
#Variables globales
class globales:
scrn = None #la pantalla principal
menu = None #la 'caja' de los menus
tecla = None
#clases
#funciones
def inicializa(stdscr):
globales.scrn = stdscr # curses.initscr() el "wrapper" ya lo inicializa
curses.noecho() #para que no se vean en pantalla las teclas que golpeamos
curses.cbreak() #para no tener que dar a retorno cada vez que se pulsa una tecla
curses.curs_set(0) #para ocultar el cursor
curses.start_color() #para poner colores (aunque no he usado esto)
globales.scrn.clear() #se limpia la pantalla principal
globales.scrn.keypad(1) #para poder leer las teclas de funcion, etc.
globales.scrn.border() #ponemos un borde a la pantalla principal
globales.scrn.refresh() #y pintamos...
def menus():
globales.menu = curses.newwin(3, 78, 1, 1) #creamos la 'caja' de los menús
globales.menu.clear() #limpiamos la caja
globales.menu.border() #le ponemos un borde
globales.menu.addstr(1, 1, "F", curses.A_UNDERLINE)
globales.menu.addstr(1, 2, "ile")
globales.menu.addstr(1, 6, "Q", curses.A_UNDERLINE)
globales.menu.addstr(1, 7, "uit")
globales.menu.refresh() #y pintamos...
while True:
globales.tecla = globales.scrn.getch()
globales.tecla = chr(globales.tecla)
if globales.tecla == 'q':break
if globales.tecla == 'f':
fichero()
def fichero():
globales.files = curses.newwin(4, 10, 3, 1)
globales.files.clear()
globales.files.border()
globales.files.addstr(1, 1, "O", curses.A_UNDERLINE)
globales.files.addstr(1, 2, "pen")
globales.files.addstr(2, 1, "E", curses.A_UNDERLINE)
globales.files.addstr(2, 2, "xit")
globales.files.refresh()
while True:
globales.tecla = globales.scrn.getch()
globales.tecla = chr(globales.tecla)
if globales.tecla == 'e':
globales.files.clear() #limpiamos el menú de ficheros
globales.files.refresh()
globales.scrn.redrawwin() #reescribimos la pantalla principal
globales.scrn.refresh()
globales.menu.redrawwin() #reescribimos la caja de menús
globales.menu.refresh()
break
if globales.tecla == 'o':
globales.scrn.addstr(10, 1, "Python curses in action!")
pass
def main(stdscr):
inicializa(stdscr)
menus()
return 0
#principal
if __name__ == '__main__':
curses.wrapper(main)
domingo, 14 de noviembre de 2010
Algo mas de "curses" en python.
Esto es algo mas complicado, un menú. El código está algo "sucio", pero espero que se entienda:
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario