Mostrar pantallas en Tkinter

Ekaitz Lizundia elizundia en fitbak.com
Vie Oct 20 09:21:32 CEST 2006


Muchisimas gracias Chema,
me ha servido de gran ayuda.


> Chema Cortes escribió:
>> El 19/10/06, Ekaitz Lizundia<elizundia en fitbak.com> escribió:
>>> Muchas gracias, ya he intentado con toplevel, la cuestion es que lo que
>>> deberia de ir en esa nueva pantalla esta en otro archivo .py y eso no
>>> se
>>> como ponerlo en la principal donde pongo el toplevel, no se si me
>>> explico
>>> bien.
>>> Si me pudieras poner un ejemplo sencillo te agradeceria mucho.
>>>
>>> El problema es:
>>> tengo 2 archivos, 1.py donde esta la ventana principal y donde pondre
>>> asociado a un boton que construya una nueva ventana que sera el
>>> toplevel.
>>> Ese toplevel cargara lo que esta en el otro archivo 2.py.
>>
>> De prisa y mal:
>
> Como habrás comprobado, el código estaba bastante mal. En lugar de
> apañar el código (bastante sencillo de arreglar), te envío mejor la
> forma en la que yo creo se debería hacer: usando orientación a objetos:
>
>
> #fichero_2.py
> from Tkinter import *
>
> class Child(Frame):
>     def __init__(self,master=None):
>         Frame.__init__(self,master)
>         self.pack(expand=True)
>         Label(self,text="Prueba").pack()
>
>
> #fichero_1.py
> from Tkinter import *
>
> from fichero_2 import Child
>
> class Main(Frame):
>     def __init__(self,master=None):
>         Frame.__init__(self,master)
>         self.pack(expand=True)
>         self.master.title("Ventana Principal")
>         Button(self,
>                text="Abrir ventana",
>                command=self.abrir_ventana
>         ).pack(expand=True)
>
>     def abrir_ventana(self):
>         w=Toplevel(self.master)
>         w.title("Hijo")
>         w.geometry("200x100")
>         Child(w)
>
> Main().mainloop()
>
> ###Fuera de programa (explorando otras posibilidades)
> Child().mainloop()
>
> root=Tk()
> Child(Main(root))
> root.mainloop()
>
> root=Tk()
> Child(Main(root))
> root.mainloop()
>
> root=Tk()
> Child(root)
> Child(root)
> Main(root)
> Child(root)
> Child(root)
> Main(root)
> root.mainloop()
>
>
> Si añades estas últimas líneas al fichero principal podrás ver las
> ventajas de usar siempre con Frames en lugar de ventanas directamente.
>
> --
> Chema Cortés (py en ch3m4.org)
> "Proudly made on earth by generic humanoid carbon units"
> _______________________________________________
> 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