es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tratando de hacer que mis ventanas GUI salgan automáticamente cuando abro la siguiente ventana.

¿Cómo puedo hacer para que se cancele automáticamente esta primera ventana cuando haga clic en el botón de la siguiente ventana?

Código de ejemplo:

from tkinter import *
from tkinter import messagebox

root = Tk()
root.title("Práctica de GUI")

def open():
    top = Toplevel()  # nueva ventana
    top.title("Kokomi")
    labels = Label(top, text="Esta se cerrará automáticamente cuando presione el botón de la siguiente ventana").pack()
    button2 = Button(top,text="Cerrar ventana", command=top.destroy).pack()
    button3 = Button(top,text="Siguiente ventana", command=open2).pack()

def open2():
    top = Toplevel()  # nueva ventana
    top.title("Guía")
    labels = Label(top, text="fin").pack()
    button2 = Button(top, text="Cerrar ventana", command=top.destroy).pack()  

button = Button(root, text="Abrir (No es necesario cerrar esto)", command=open).pack()


root.mainloop()

Haz clic en Abrir
Haz clic en [Nueva ventana] y después de eso esta ventana debería desaparecer y continuar hacia la tercera imagen. Haz clic en [Cerrar ventana] para cerrar la segunda ventana.
La segunda imagen desaparecerá cuando haga clic en la siguiente ventana.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para cerrar automáticamente la primera ventana al hacer clic en el botón de la siguiente ventana, puede agregar root.withdraw() antes de llamar a la función open2(). Esto ocultará la ventana raíz y se enfocará en la nueva ventana de nivel superior.

    Aquí está el código modificado:

    from tkinter import *
    from tkinter import messagebox
    
    root = Tk()
    root.title("Práctica de GUI")
    
    def open():
        top = Toplevel()  # nueva ventana
        top.title("Kokomi")
        labels = Label(top, text="Esta se cerrará automáticamente cuando haga clic en la siguiente ventana").pack()
        button2 = Button(top,text="Cerrar ventana", command=top.destroy).pack()
        button3 = Button(top,text="Siguiente ventana", command=lambda:[root.withdraw(), open2()]).pack()
    
    def open2():
        top = Toplevel()  # nueva ventana
        top.title("Guía")
        labels = Label(top, text="fin").pack()
        button2 = Button(top, text="Cerrar ventana", command=top.destroy).pack()  # destroy para salir
        button3 = Button(top, text="Siguiente ventana", command=open3).pack()
    
    def open3():
        top = Toplevel()  # nueva ventana
        top.title("Python")
        labels = Label(top, text="Esta es la última ventana").pack()
        button2 = Button(top, text="Cerrar ventana", command=top.destroy).pack()  # destroy para salir
    
    button = Button(root, text="Abrir (no es necesario cerrar esto)", command=open).pack()
    
    root.mainloop()
    

    La función lambda se utiliza para combinar dos comandos, es decir, ocultar la ventana raíz y llamar a la función open2(). De esta manera, la primera ventana se cerrará automáticamente al hacer clic en el botón de la siguiente ventana.

    ¡Espero que esto ayude!

Comments are closed.