Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: darkweb64 en 18 Noviembre 2015, 22:54 pm



Título: [Python3 + tkinter] Ayuda ventanas en cascada tkinter
Publicado por: darkweb64 en 18 Noviembre 2015, 22:54 pm
Necesito su ayuda, tengo tres ventanas construidas con tkinter, necesito que la ventana root siempre este encima de las demás y que no se pueda cambiar a la otra hasta que termine las operaciones en ella. Luego al cerrar la ventana root debe quedar abierta la ventana one y no poder cambiar a la ventana two hasta acabar las operaciones en ella y por ultimo permitirme usar la ventana one que es la única que tendrá botón cerrar.

OS Windows Python 3.4 tk 8.6 creo
Espero puedan ayudarme gracias.

Código:
from tkinter import *

root = Tk()
root.title('root')

one = Toplevel(root)
one.title('one')

two = Toplevel(root)
two.title('two')

root.mainloop()
one.mainloop()
two.mainloop()


Título: Re: [Python3 + tkinter] Ayuda ventanas en cascada tkinter
Publicado por: tincopasan en 19 Noviembre 2015, 09:47 am
¿es algún tipo de ejercicio? porque no entiendo la lógica, ¿no sería mejor crear la ventana x , realizar las operaciones y recién crear la ventana siguiente?


Título: Re: [Python3 + tkinter] Ayuda ventanas en cascada tkinter
Publicado por: darkweb64 en 11 Diciembre 2015, 18:04 pm
Enconte la respuesta a mi pregunta dejo un ejemplo y de dónde lo saque para alguien más

Código:
#!/usr/bin/env python
# https://es.wikibooks.org/wiki/Interfaz_gr%C3%A1fica_con_Tkinter/Gesti%C3%B3n_del_dise%C3%B1o/M%C3%A9todos

import tkinter

root = tkinter.Tk()
root.title("Ventana padre")
# Creamos una ventana hija de root
otra_ventana = tkinter.Toplevel(root)
otra_ventana.title("Ventana hija")
# Este es solo para decoracion
etiqueta = tkinter.Label(otra_ventana, text='Este es un ejemplo de transient')
etiqueta.pack()
# Posicionamos las dos ventanas para que sea mas claro el ejemplo
root.geometry("400x400+100+100")
otra_ventana.geometry("200x200+150+150")
# Y ahora si llamamos a este metodo
otra_ventana.transient(root)
root.mainloop()