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.

¿Cómo puedo ejecutar mi código anterior? (cómo regresar en la ventana).

En este código estoy intentando ejecutar mis dos códigos diferentes en la misma ventana, o parece que se están ejecutando en la misma ventana.
Cuando hago clic en el “botón siguiente”, se ejecuta la función “pantalla siguiente”. Aquí tenemos de nuevo un botón con el que intento ejecutar mi código anterior (pantalla principal) pero no funciona.
Si mi lógica de intentar ejecutar dos códigos en la misma pantalla está equivocada, por favor avíseme y luego cómo puedo ejecutar dos o más archivos de código en la misma raíz (pantalla o ventana).

import tkinter as md

def next_screen():
frame.destroy()
root.geometry(“300×200”)

def main_screen():
next_frame.destroy()
root.resizable(width = False, height = False)
root.geometry(“200×200”)

next_frame = md.Frame(root)
next_frame.pack()
label = md.Label(next_frame, text = “Haz clic en el botón de abajo para ir a la ventana principal”, pady = 20)
label.pack()

button = md.Button(next_frame, text = “Haz clic aquí”, font = “verdana 15”, command = main_screen)
button.pack()

root = md.Tk()
root.geometry(“200×200”)
frame = md.Frame(root)
frame.pack()
label = md.Label(frame, text = “Ventana principal”, pady = 20)
label.pack()

next_button = md.Button(frame, text = “Avanzar”, font = “verdana 15”, command = next_screen)
next_button.pack()

root.mainloop()
“`

Con este código puedo avanzar pero no puedo volver atrás. Tal vez se necesite un bucle para ejecutarlo.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que estás intentando crear múltiples pantallas o ventanas dentro de una sola aplicación Tkinter. Una forma de lograr esto es creando marcos separados para cada pantalla y luego alternar entre ellos utilizando los métodos pack_forget() y pack().

    Sin embargo, en tu código actual, estás intentando definir la función main_screen() dentro de la función next_screen(), lo cual podría causar algunos problemas. Es mejor definir todas tus funciones fuera de cualquier otra función.

    Para retroceder a la pantalla o ventana anterior, puedes crear una función separada que maneje el cambio. Aquí tienes un ejemplo de cómo puedes modificar tu código para lograr esto:

    import tkinter as tk
    
    def main_screen():
        # definir código para la pantalla principal
        global frame
        frame.pack()
        label.config(text="Ventana principal")
        next_button.pack()
    
    def next_screen():
        # definir código para la siguiente pantalla
        global frame, next_frame
        frame.pack_forget()
        next_frame = tk.Frame(root)
        next_frame.pack()
        label.config(text="Siguiente ventana")
        next_button.pack_forget()
    
        button = tk.Button(next_frame, text="Haz clic en el siguiente botón para volver a la ventana principal", font="verdana 15", command=go_back)
        button.pack()
    
    def go_back():
        # función para volver a la pantalla principal
        global next_frame
        next_frame.pack_forget()
        main_screen()
    
    # crear ventana principal
    root = tk.Tk()
    root.geometry("200x200")
    root.resizable(width=False, height=False)
    
    # crear marco principal y widgets
    frame = tk.Frame(root)
    frame.pack()
    label = tk.Label(frame, text="Ventana principal", pady=20)
    label.pack()
    
    next_button = tk.Button(frame, text="Avanzar", font="verdana 15", command=next_screen)
    next_button.pack()
    
    root.mainloop()
    

    En este código modificado, hemos definido las funciones main_screen(), next_screen() y go_back() fuera de cualquier otra función. También hemos agregado una variable global next_frame para realizar un seguimiento del marco de la siguiente pantalla.

    Cuando hacemos clic en el botón next_button, se llama a la función next_screen(), que oculta el frame utilizando el método pack_forget() y crea un nuevo next_frame para la siguiente pantalla.

    La función go_back() se llama cuando hacemos clic en el botón en el next_frame, lo cual oculta el next_frame utilizando pack_forget() y muestra el frame utilizando el método pack().

    ¡Espero que esto te ayude a lograr lo que estabas intentando hacer!

Comments are closed.