POO - Tkinter y � get()

Ernesto Revilla erny en sicem.biz
Lun Jul 25 09:32:00 CEST 2005


Hola,

deberías leerte primero la introducción a Python que viene en la 
documentación oficial. Allí, en el apartado de clases, verás que al 
definir los métodos de clase, es necesario especificar como argumento la 
propia instancia que se le pasará a la función. En contraste con 
C++/Java y otros, en Python, hay que especificarlo, de manera que todos 
los métodos de clase tienes que:

class GUI:
    def __init__(self):
        self.root=Tk()
        self.root.title()
        self.root.geometry()
        self.crear_widgets()
        self.root.mainloop()

....
Mira como el self.root crea una variable de instancia, y el 
self.crear_widgets está llamando un método de la instancia.

Erny



Andrés Ignacio Martínez Soto escribió:

>Hola a todos, estoy programando una pequeña aplicación para uso personal
>con la siguiente estructura:
>
>imports Tkinter, sys, ...
>-main()
>	
>	class GUI:
>		__init__()
>			root=Tk()
>			root.title()
>			root.geometry()
>			crear_widgets()
>			root.mainloop()
>		
>		crear_widgets(op)
>			if op==1:
>				widgets de la 1ª ventana
>			elif op==2:
>				widgets de la 2ª ventana
>			elif op==3:
>				widgets de la 3ª ventana
>			else:
>				...
>
>		crear_ventana2():
>			v2=Tk()
>			crear_widgets(2)
>			v2.mainloop()
>
>		crear_ventana3():
>			v3=Tk()
>			crear_widgets(3)
>			v3.mainloop()
>
>		procesa_datos(op):
>			...get()
>			...get()
>			genera_xml(datos)
>
>		genera_xml(datos):
>			try:	
>			...
>			except:
>				try:
>					raise "Error ...."
>
>			lista=[]
>			dt="""
>                        <Loquesea> Dato1 %s
></loquesea>%(datos[0])
>                        """
>			f=open("fichero.xml","r")
>			linea="algo"
>			while linea!="<EOF></EOF>":
>				linea=f.readline
>				lista.append(linea)
>				
>			f.close()
> 	                
>                        f=open("fichero.xml","w")			
>			for i in range(len(lista)):	
>				f.write(lista[i])
>			f.write(dt)
>			f.write("<EOF></EOF>")
>			f.close()
>
>		errores(error):
>			tk....
>
>Estoy intentando que desde la función
>procesa_datos(self,variable1,variableN) me coja los datos de los Entrys
>de Tkinter definidos en crear_widgets(op) con el método campo.get(),
>pero al parecer cuando se le pasa el "campo", dice que se le pasa un
>"None", y por lo tanto no me funciona el método .get().
>¿Alguna idea de como puedo recoger los datos de los entrys desde otra
>función de la misma clase?
>La aplicación es para PDA, por eso está desarrollada con Tkinter, en
>PyGTK lo que hago es enlazar un botón y los "entrys" (textboxes) con una
>"señal" (evento) a una función de la misma clase, y allí si que
>funcionan. He mirado varias webs y veo que definen los widgets a usar en
>sus aplicaciones como "self.algo", pero yo quisiera tener una función
>que los definiese. ¿Alguna sugerencia?
>Si utilizo XML es por el marcado que tiene y porque embebo xhtml+css
>+html en un mismo documento creando documentos muy majos.
>Lo utilizo así porque no conozco los parseadores de XML.
>
>Saludos y gracias por todo
>Andrés Ignacio Martínez Soto
>
>  
>
>------------------------------------------------------------------------
>
>_______________________________________________
>Python-es mailing list
>Python-es en aditel.org
>http://listas.aditel.org/listinfo/python-es
>  
>




---
avast! Antivirus: Saliente mensaje limpio.
Base de datos de Virus (VPS): 0529-2, 21/07/2005
Comprobado en: 25/07/2005 9:32:01
avast! tiene los derechos reservados (c) 2000-2004 ALWIL Software.
http://www.avast.com


------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


Más información sobre la lista de distribución Python-es