ventana Tk que no se cierra

Rolando José Torres Sánchez rolandojtorres en gmail.com
Mar Sep 25 11:51:15 CEST 2007


Pienso que estas haciendo un cuadro de dialogo que sea un formulario
para introducir variables.

Desde la ventana principal con un boton "nuevo registro" invocaria la
creacion del toplevel.

Luego esta nueva ventana podria ser el toplevel con los campos para
ser llenados y con tres botones uno limpiar para dejar en blanco los
campos, el otro para cancelar y el otro para guardar los valores de
los campos.

El boton cerrar destruiria el toplevel

El boton guardar escribiria la info, o guardaria los datos y
destruiria el toplevel.




El 24/09/07, Alezeia González <Alezeia.Gonzalez en iit.upcomillas.es> escribió:
>
>
> No tengo muy claro dónde tengo que meter el toplevel. Ahora me aparecen
> muchas más ventanas que hay que cerrar!
> Reenvío el código por si se os ocurre algo...
>
> from Tkinter import *
> import tkSimpleDialog
> import string
> import psspy
> import os
>
> class opciones(tkSimpleDialog.Dialog):
>
>     def init(self):
>         self.nombre='pepe'
>         self.apellidos='garcía'
>         self.edad=int(9)
>
>     def body(self,master):
>         self.init()
>         Label(master, text="Nombre:").grid(row=0, column=0, sticky=W)
>         self.n = Entry(master)
>         self.n.insert(0,self.nombre)
>         self.n.grid(row=0, column=1,sticky=E)
>
>         Label(master, text="Apellidos:").grid(row=1, column=0,sticky=W)
>         self.a = Entry(master)
>         self.a.insert(0,self.apellidos)
>         self.a.grid(row=1, column=1)
>
>         Label(master, text="Edad:").grid(row=7, column=0,sticky=W)
>         self.e = Entry(master)
>         self.e.insert(0,self.edad)
>         self.e.grid(row=7, column=1)
>
>     def guardaConf(self):
>         ierr = psspy.progress_output(1, 'SALIDA STANDARD',(1,1))
>         print ' entra en guardar'
>         self.nombre=self.n.get()
>         self.apellidos=self.a.get()
>         self.edad=self.e.get()
>         print ' termina de guardar'
>
>
>     def imprimir(self):
>         ierr = psspy.progress_output(1, 'SALIDA STANDARD',(1,1))
>         print 'Datos de configuración:'
>         print '- Nombre: %s'%(self.nombre)
>         print '- Apellidos: %s'%(self.apellidos)
>         print '- Edad: %s'%(self.edad)
>
>     def apply(self):
>         self.guardaConf()
>         self.imprimir()
>
>
> root = Tk()
> w = opciones(root,'Configuracion nMenos1')
> w.mainloop()
> ierr = psspy.progress_output(1, 'SALIDA STANDARD',(1,1))
> print ' y aquí ya seguiría...'
>
> Gracias.
> __________________________________________________
>
> Alezeia González García
> Instituto de Investigación Tecnológica (I.I.T.)
> Universidad Pontificia Comillas
> C/Quintana, 21
> 28008 Madrid (Spain)
> Teléfono  : (34) 91 542 28 00  #4296
> Fax       : (34) 91 542 31 76
> e-mail    : alezeia.gonzalez en iit.upcomillas.es
> __________________________________________________
>
> -----Mensaje original-----
> De: python-es-bounces en aditel.org [mailto:python-es-bounces en aditel.org] En
> nombre de Rolando José Torres Sánchez
> Enviado el: domingo, 23 de septiembre de 2007 2:03
> Para: La lista de python en castellano
> Asunto: Re: [Python-es] Re: ventana Tk que no se cierra
>
> usa un toplevel para la ventana de configuracion, y un procedimiento para
> guardar los valores y luego  un destroy .toplevel
>
> El día 21/09/07, Alezeia González <Alezeia.Gonzalez en iit.upcomillas.es>
> escribió:
> >
> >
> > Gracias Gabriel!
> >
> >
> >
> > He probado a quitar el mainloop() y la ventana se cierra sola. El problema
> > es que cuando vuelvo a ejecutar el programa en Python sin cerrar y volver
> > a
> > abrir el PSS/E, aparece la ventana sin los valores por defecto que le meto
> > por fichero. Al introducir los valores nuevos, no me los actualiza y
> > ejecuta
> > el caso anterior.
> >
> >
> >
> > Lo que necesito es que, al pulsar aceptar, se actualicen los valores y se
> > cierre la ventana, y que, al volver a ejecutar, se actualicen los valores
> > y
> > así no tener que estar abriendo y cerrando PSS/E continuamente.
> >
> >
> >
> > He probado con varias llamadas a funciones de Tk:
> >
> > *         w.mainloop()--> hay que cerrarlo a mano
> >
> > *         w.update() --> se cuelga la ventana
> >
> > *         w.withdraw() --> se oculta la ventana y no veo manera de
> > cerrarla
> >
> > *         w.show()--> he probado la combinación del anterior con éste,
> > pero
> > hace lo mismo que sin el w.show()
> >
> > *         w.quit()--> se cuelga la ventana Tk y al ejecutar otra vez no
> > actualiza los valores
> >
> >
> >
> > Espero encontrar la función adecuada. ¿Alguien la conoce o conoce alguna
> > otra forma de hacer el diseño de la ventana?
> >
> >
> >
> > Gracias.
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > -----Mensaje original-----
> > De: python-es-bounces en aditel.org [mailto:python-es-bounces en aditel.org] En
> > nombre de Gabriel Genellina
> > Enviado el: viernes, 21 de septiembre de 2007 4:08
> > Para: python-es en aditel.org
> > Asunto: [Python-es] Re: ventana Tk que no se cierra
> >
> >
> >
> > En Thu, 20 Sep 2007 10:33:24 -0300, Alezeia González
> >
> > <Alezeia.Gonzalez en iit.upcomillas.es> escribi?:
> >
> >
> >
> > > Tengo un problema. Estoy haciendo una ventana para un programa en Python
> >
> > > que
> >
> > > se ejecuta desde PSS/E. La ventana sólo sirve para introducir unas
> >
> > > opciones
> >
> > > de ejecución. Una vez que se introducen, para que el programa siga
> >
> > > ejecutando, tengo que cerrar la ventana a mano pulsando "X". Necesito
> >
> > > que la
> >
> > > ventana desaparezca al pulsar aceptar y que siga ejecutando.
> >
> > >
> >
> > >
> >
> > >
> >
> > > root = Tk()
> >
> > > w = opciones(root,'Configuracion nMenos1')
> >
> > > w.mainloop()
> >
> > > ierr = psspy.progress_output(1, 'SALIDA STANDARD',(1,1))
> >
> > > print ' y aquí ya seguiría...'
> >
> >
> >
> > Creo que todo se arregla quitando la llamada a w.mainloop()
> >
> > tkSimpleDialog hace todo lo necesario y tiene su propio loop de mensajes.
> >
> >
> >
> > <http://www.pythonware.com/library/tkinter/introduction/dialog-windows.htm
> > >
> >
> >
> >
> > --
> >
> > Gabriel Genellina
> >
> >
> >
> >
> >
> > --
> > La presente comunicación tiene carácter confidencial y es para el
> > exclusivo uso del destinatario indicado en la misma. Si Ud. no es el
> > destinatario indicado, le informamos que cualquier forma de distribución,
> > reproducción o uso de esta comunicación y/o de la información contenida en
> > la misma están estrictamente prohibidos por la ley. Si Ud. ha recibido
> esta
> > comunicación por error, por favor, notifíquelo inmediatamente al remitente
> > contestando a este mensaje y proceda a continuación a destruirlo. Gracias
> > por su colaboración.
> >
> > This communication contains confidential information. It is for the
> > exclusive use of the intended addressee. If you are not the intended
> > addressee, please note that any form of distribution, copying or use of
> this
> > communication or the information in it is strictly prohibited by law. If
> you
> > have received this communication in error, please immediately notify the
> > sender by reply e-mail and destroy this message. Thank you for your
> > cooperation.
> > _______________________________________________
> > Python-es mailing list
> > Python-es en aditel.org
> > http://listas.aditel.org/listinfo/python-es
> >
>
>
>
> --
> Rolando José Torres Sánchez
> TCL/TK inside Python
> MSN:rolandojtorres en hotmail.com
>
>
> --
> La presente comunicación tiene carácter confidencial y es para el exclusivo
> uso del destinatario indicado en la misma. Si Ud. no es el destinatario
> indicado, le informamos que cualquier forma de distribución, reproducción o
> uso de esta comunicación y/o de la información contenida en la misma están
> estrictamente prohibidos por la ley. Si Ud. ha recibido esta comunicación
> por error, por favor, notifíquelo inmediatamente al remitente contestando a
> este mensaje y proceda a continuación a destruirlo. Gracias por su
> colaboración.
>
> This communication contains confidential information. It is for the
> exclusive use of the intended addressee. If you are not the intended
> addressee, please note that any form of distribution, copying or use of this
> communication or the information in it is strictly prohibited by law. If you
> have received this communication in error, please immediately notify the
> sender by reply e-mail and destroy this message. Thank you for your
> cooperation.
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
>


-- 
Rolando José Torres Sánchez
TCL/TK inside Python
MSN:rolandojtorres en hotmail.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