#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
#
# pygtk
#
# Ejemplo de utilizacion de entradas de texto (Entry)
#
# http://www.lawebdelprogramador.com
#
import pygtk
# Indicamos que deseamos utilizar la versión 2.0 de gtk
pygtk.require('2.0')
import gtk
import re
class X(object):
def __init__(self):
# Creamos la ventana. Indicamos que se desea una ventana sometida a las
# decoraciones y posicionamiento del manejador de ventanas.
self.window=gtk.Window(gtk.WINDOW_TOPLEVEL)
# Conector para cuando se va a cerrar la ventana
self.window.connect("destroy", self.destroy, None)
# Creamos una caja vertical...
vbox=gtk.VBox(True)
# Creamos el cuadro de texto Entry limitado a 50 caracteres
entry=gtk.Entry(50)
entry.connect("activate",self.entryEnter,entry)
entry.connect("changed",self.entryChanged,entry)
entry.connect("delete-text",self.entryDelete,entry)
entry.connect("insert-text",self.entryInsert,entry)
entry.show()
vbox.pack_start(entry)
# Creamos una caja horizontal para contener los checks
hbox=gtk.HBox(True)
# Creamos los checks con sus conectores
checkEditable=gtk.CheckButton("Editable")
checkEditable.set_active(True)
checkEditable.connect("toggled",self.toggle_editable,entry)
checkEditable.show()
checkVisible=gtk.CheckButton("Visible")
checkVisible.set_active(True)
checkVisible.connect("toggled",self.toggle_visible,entry)
checkVisible.show()
# Colocamos los checks en la caja horizontal
hbox.pack_start(checkEditable)
hbox.pack_start(checkVisible)
hbox.show()
# Añadimos la caja horizontal a la caja vertical
vbox.pack_start(hbox)
# Creamos un boton para seleccionar el texto
button=gtk.Button("seleccionar el texto")
button.connect("clicked",self.entrySeleccionar,entry)
button.show()
vbox.pack_start(button)
vbox.show()
self.window.add(vbox)
self.window.show()
# Evento que se ejecuta cuando se pulsa la tecla enter
def entryEnter(self,widget,entry):
print "activate %s " % entry.get_text()
# Evento que se ejecuta cuando se modifica el contenido
def entryChanged(self,widget,entry):
print "changed %s " % entry.get_text()
# Evento que se ejecuta cuando se elimina
def entryDelete(self,widget,start,end,entry):
print "delete '%s' start=%d end=%d " % (entry.get_text()[start:end],start,end)
# Evento que se ejecuta cuando se inserta texto
def entryInsert(self,widget,newText,newTextLength,position,entry):
# Para este ejemplo, vamos a impedir la entrada de numeros en el cuadro de texto
if re.match("[0-9]", newText):
entry.stop_emission("insert-text")
else:
print "Insert '%s' lenght=%d " % (newText,newTextLength)
# Evento que se ejecuta cuando se pulsa el boton para seleccionar el texto
def entrySeleccionar(self,widget,entry):
# Seleccionamos el texto entero
entry.select_region(0,len(entry.get_text()))
# Enviamos el foco al control "entry"
self.window.set_focus(entry)
# Evento que se ejecuta cuando se pulsa sobre check editable
# Recibimos como parametros el checkbutton pulsado, y el "entry"
def toggle_editable(self,checkbutton,entry):
# Establecemos el valor editable del "entry" igual que el checkbutton
entry.set_editable(checkbutton.get_active())
# Enviamos el foco al control "entry"
self.window.set_focus(entry)
# Evento que se ejecuta cuando se pulsa sobre check visible
# Recibimos como parametros el checkbutton pulsado, y el "entry"
def toggle_visible(self,checkbutton,entry):
# Establecemos el valor visible del "entry" igual que el checkbutton
entry.set_visibility(checkbutton.get_active())
# Enviamos el foco al control "entry"
self.window.set_focus(entry)
def destroy(self,widget,data=None):
gtk.main_quit()
if __name__=="__main__":
X()
gtk.main()
Comentarios sobre la versión: Versión 1 (0)
No hay comentarios