6.2   Un editor

El widget de texto Text() nos da la base para hacer un editor. La clase Text() tiene los métodos insert() y get() para escribir o leer el contenido del buffer de texto que corresponde al área visible para el usuario. El código básico sería:

import Tkinter, sys 
 
raiz = Tkinter.Tk() 
editor = Tkinter.Text(raiz) 
editor.pack() 
 
f = open( sys.argv[1] ) 
editor.insert( '1.0', f.read() ) 
 
raiz.mainloop()

Al código anterior le agregamos instrucciones en el bloque principal indicar que se requiere el nombre del archivo. El bloque maneja la excepción en caso de que el archivo no exista y se trate de un archivo nuevo a crear. Se agregan también las funciones quit() para terminar la aplicación, y save() para guardar el contenido del buffer en el archivo. La aplicación se termina mediante la combinación de teclas Control+q y el archivo se salva con las teclas Control+s. Estos dos eventos de teclado se llaman <Control-q> y <Control-s> en Tkinter*,* y se ligan las funciones quit() y save() a estos eventos mediante el método bind que tienen todos los widgets en Tk:

import Tkinter, sys 
 
def quit(event ): 
    "Termina la aplicación." 
    raiz.quit() 
 
def save(event): 
    "Salva el texto del editor." 
    f = open( nombrearchivo, 'w' ) 
    f.write( editor.get( '1.0', END) ) 
    f.close() 
    print 'archivo', nombrearchivo, 'salvado.' 
 
raiz = Tkinter.Tk() 
editor = Tkinter.Text(raiz) 
editor.pack() 
editor.bind( '<Control-q>', quit ) 
editor.bind( '<Control-s>', save ) 
 
if len(sys.argv)>1: 
    nombrearchivo = sys.argv[1] 
    try: 
        f = open( nombrearchivo ) 
        editor.insert( '1.0', f.read() ) 
    except: 
        print nombrearchivo, 'es archivo nuevo' 
else: 
    print 'falta proporcionar nombre de archivo' 
    sys.exit() 
 
mainloop()

Este primer ejemplo nos muestra lo fácil que es crear una aplicación gráfica directamente. Para casos de interfases más complejas, existen herramientas como Glade que ayudan a crearla en forma gráfica.

id2 [1]6.3   Usando una claseid2