import sys # Importamos sys para poder usar exit # Esto se hace para ver si se tiene pygtk, en caso de no tenerlo..... try: import pygtk pygtk.require("2.0") # Saltaria esta excepcion que imprimiria el error except: print "ha de tener pygtk instalado" sys.exit(1) # salimos del programa si da el error # Lo mismo que antes pero con la libreria GTK try: import gtk import gtk.glade except: print "Necesita tener GTK instalado" sys.exit(1) # creamos una clase para nuestra aplicacion class Principal: # Definimos el constructor def __init__(self): # Creamos una variable con el nombre del fichero de glade self.gladefile = "gui.glade" # Ahora creamos el arbol de widgets con los widgets del fichero glade # Tenemos que darle el nombre del fichero y el nombre de la ventana self.wTree = gtk.glade.XML(self.gladefile, "ventana") # Creamos un diccionario que manejará los eventos, en este caso 2, el evento # delete_event (para cerrar la aplicacion) de la ventana y el evento # clicked del boton. Como puedes ver, es un diccionario donde su key es el nombre # del evento tal y como lo pusiste en el glade y el valor de la key sera # el nombre de la funcion que contralara el evento # Como veras, el delete_event de la ventana he dicho que use la funcion gtk.main_quit # de la libreria GTK, vamos esto lo que hace es destruir la ventna, asi que codigo # que nos ahorramos eventos = {"on_ventana_delete_event": gtk.main_quit, "on_btnPulsame_clicked": self.on_btnPulsame_clicked} # ahora conectamos los eventos, esto se hace siempre self.wTree.signal_autoconnect(eventos) # Ahora, extraemos las dos cajas de texto que tenemos # Para poder manipularlas desde el codigo fuente # Como vas a ver, es tan facil de asignarle a una variable # el valor de retorno de esa funcion cuyo parametro es el nombre # del widget tal y como lo hemos puesto en el glade self.cajaNombre = self.wTree.get_widget("cajaNombre") self.cajaSaludo = self.wTree.get_widget("cajaSaludo") # Evento del boton, siempre se pone los mismos parametros def on_btnPulsame_clicked(self, widget): # Primero guardamos en una variable lo que hemos escrito en la primera caja # como veras, es tan facil como llamar al metodo get_text() de la caja que extraimos # antes del wTree self.Nombre = self.cajaNombre.get_text() # Ya tenemos el nombre, ahora lo insertamos en la otra caja en un saludo self.cajaSaludo.set_text("Hola %s" % self.Nombre) # Ha sido tan facil como pasar por argumento una cadena, en este caso un saludo # con el nombre que antes hemos cogido de la primera caja. # Esto de aqui siempre se pone, cambia Principal() por el nombre de tu clase if __name__ == "__main__": Principal() gtk.main()