[pyar] Consulta Tkinter

patricio tula tula.patricio en gmail.com
Vie Mayo 9 14:54:41 ART 2014


Muchas gracias por los consejos, trataré de aplicarlos.
Me parece muy necesaria e importante la modularización del programa no solo
para ordenar el GUI sino para agregarle otras estructuras que estoy
programando en paralelo de manejo base de datos (en sqlalchemy) y lectura
de datos (dev).
Gracias de nuevo :-)
Saludos,


2014-05-09 13:59 GMT-03:00 Roberto Gomez <rgomez en autotrol.com.ar>:

> patricio tula wrote:
>
>> Claro, es eso lo que busco.
>> Lo implementé pero no está funcionando. Por lo que leí acá [1
>> <http://infohost.nmt.edu/tcc/help/pubs/tkinter/tkinter.pdf>] es un
>>
>> método de widget y lo implementé tal cual pero no bloquea las ventanas
>> en niveles inferiores.
>> Mando el código. Cualquier otra corrección o consejo será bienvenido :-).
>> Saludos,
>>
>>
>> 2014-05-09 12:10 GMT-03:00 Roberto Gomez
>> <rgomez en autotrol.com.ar
>> <mailto:rgomez en autotrol.com.ar>>:
>>
>>
>>     patricio tula wrote:
>>
>>         Gracias por el aporte rober :). Acabo de cambiar eso.
>>
>>         Otra tema que todavìa no pude solucionar y quisiera consultar es
>>         como
>>         bloquear una ventana. En particular, en el fragmento que mandé
>>         antes no
>>         aparece la necesidad. Sin embargo, cuando arranca el programa la
>>         primer
>>         ventana que aparece no cierra y sigue funcionando. Existe algún
>>         método
>>         para bloquearla mientras el usuario interactúa con otras
>>         ventanas Toplevels?
>>
>>
>>         Saludos,
>>         Pato
>>
>>
>>     No entiendo bien la pregunta, así que voy a suponer.
>>     Si queres que una ventana conserve el foco y que hasta que no la
>>     cierres no puedas interactuar con ninguna otra ventana de tu
>>     aplicación, investigá el método wait_window(window) de los
>>     Toplevels. Este método hace que un toplevel espere a que cierres
>>     'window' para devolver el control. Si 'window' es el mismo toplevel,
>>     entonces se queda esperando a que se cierre él mismo.
>>
>>     Si esto no tiene nada que ver con lo que preguntás, hacéte un
>>     ejemplito autocontenido, decí qué es lo que hace y qué es lo te
>>     gustaría que hiciera.
>>
>>     Saludos,
>>
>>     rober
>>
>
> Le agregué sólamente una linea que ejecuta grab_set() en el Toplevel para
> pasarle primero el control a esa ventana y luego que se ejecute el
> wait_window para que no la suelte.
>
> def PrestamosHerramientas():
>         Prestamos = Toplevel()
>         nombreApellido=StringVar(Prestamos)
>         dni=StringVar(Prestamos)
>         Prestamos.title("LABI-Sistema de control de prestamos-Prestamos")
>         #Nombre y apellido
>         L1=Label(Prestamos,text="Nombre y Apellido").grid(row=0,column=0)
>         E1=Entry(Prestamos,textvariable=nombreApellido,
> bd=5).grid(row=0,column=1)
>         #DNI
>         L2=Label(Prestamos, text="DNI").grid(row=1,column=0)
>         E2=Entry(Prestamos, textvariable=dni,bd=5).grid(row=1, column=1)
>         #herramientas prestadas
>         L3=Label(Prestamos,text="Herramientas:").grid(row=2,column=0)
>         #TODO Faltan metodos de lectura de codigo de barras e imprimir la
> herramienta leida como label
>         def Prestar():
>                 Prestamos.destroy()
>                 Prestar = Toplevel()
>                 Prestar.geometry("200x100")
>                 Prestar.title("Prestar")
>                 PrestarNyALabel = Label(Prestar,
> text=nombreApellido.get()).pack()
>                 PrestarDNILabel = Label(Prestar, text=dni.get()).pack()
>                 PrestarHerramientasLabel = Label(Prestar,
> text="Herramientas").pack()
>         PrestarBoton = Button(Prestamos, text="PRESTAR",command=
> Prestar).grid(row=3,column=1)
>         *Prestamos.grab_set()*
>         Prestamos.wait_window(Prestamos)
>
> Igualmente, crítica constructiva y según mi experiencia y gusto, la
> aplicación así como la estás planteando (usando funciones) está bastante
> chancha (no offence). Tarde o temprano, más temprano que tarde, se va a
> encarajinar tanto que la va a mantener Cadorna, y cada nueva funcionalidad
> que quieras agregar/modificar va a ser un parto.
>
> Lo que se suele hacer es implementar cada "formulario/dialog" como una
> clase que, por lo menos, herede de un Toplevel o de un Frame e implementar
> tus funcionalidades ahí. Es más, ideal es tener una clase base, que hereda
> de Toplevel o Frame, y cada uno de tus formularios hereda de esa clase
> base. Entonces todos tus formularios pueden tener el mismo look&feel xej
> botones de aceptar, cancelar, hot-keys para el help, etc.
>
> Te recomiendo el libro de Grayson que ya se debe conseguir fácilmente por
> ahí, que si bien es un poco viejito, no sólamente ahonda en Tkinter, sino
> en diseño y buenas prácticas para la construcción de gui(s).
>
> Mis 0.00001 centavos,
> saludos
>
> rober
>
>
>
>
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140509/ed91eb23/attachment-0001.html>


More information about the pyar mailing list