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 utilizar un widget Entry en una función desde otra función.

¿Cómo puedo usar un entry.get que está en una función nuevamente en otra función?

Quiero usar answer1.get que está en def question1() nuevamente en question2()

Entonces, quiero lo siguiente:

Si los usuarios dan la respuesta correcta a la primera pregunta, entonces pueden ver la segunda, de lo contrario, deben dar la respuesta correcta a la primera pregunta.

¿Es eso posible?

from tkinter import *

screen = Tk()

screen.geometry("1540x821")
screen.title("Examen")
screen.state("zoomed")
screen.resizable(0, 0)


def question1():
    q1 = Label(screen, text="Esta es la Pregunta 1: ")
    q1.pack()

    a1 = StringVar()

    answer1 = Entry(screen, textvariable=a1)
    answer1.pack()

    def check():

        if "shopping" in answer1.get():
            correct = Label(screen, text="respuesta correcta")
            correct.place(relx=0.5, rely=0.1)
        else:
            wrong = Label(screen, text="respuesta incorrecta")
            wrong.place(relx=0.5, rely=0.1)

    buttoncheck = Button(screen, text="Verificar", command=check)
    buttoncheck.place(relx=0.5, rely=0.4)


def question2():
    if "shopping" in answer1.get():

        q2 = Label(screen, text="Esta es la Pregunta 2 : ")
        q2.pack()

        a2 = StringVar()

        answer2 = Entry(screen, textvariable=a2)
        answer2.pack()

    else:
        previous = Label(screen, text="regresar a la pregunta anterior")
        previous.pack()


button1 = Button(screen, text="Comenzar", command=question1)
button1.place(relx=0.5, rely=0.5)

button2 = Button(screen, text="Siguiente", command=question2)
button2.place(relx=0.5, rely=0.6)

screen.mainloop()
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para usar answer1.get(), que está en la función question1(), primero debes declarar answer1 fuera de la función question1() como una variable global para que pueda ser accedida por otras funciones.

    Para modificar el código, primero declara global answer1 dentro de la función question1(). Luego, elimina la variable answer1 dentro de la función check() y utiliza directamente la variable global answer1.

    Aquí está el código modificado:

    from tkinter import *
    
    screen = Tk()
    
    screen.geometry("1540x821")
    screen.title("Examen")
    screen.state("zoomed")
    screen.resizable(0, 0)
    
    # Declara answer1 como una variable global
    global answer1
    
    def question1():
        q1 = Label(screen, text="Esta es la Pregunta 1: ")
        q1.pack()
    
        a1 = StringVar()
    
        answer1 = Entry(screen, textvariable=a1)
        answer1.pack()
    
        # Declarar answer1 como una variable global para ser utilizada por otras funciones
        global answer1
    
        def check():
            if "compras" in answer1.get():
                correct = Label(screen, text="Respuesta correcta")
                correct.place(relx=0.5, rely=0.1)
            else:
                wrong = Label(screen, text="Respuesta incorrecta")
                wrong.place(relx=0.5, rely=0.1)
    
        buttoncheck = Button(screen, text="Comprobar", command=check)
        buttoncheck.place(relx=0.5, rely=0.4)
    
    
    def question2():
        global answer1  # Utiliza la variable global answer1
    
        if "compras" in answer1.get():
            q2 = Label(screen, text="Esta es la Pregunta 2: ")
            q2.pack()
    
            a2 = StringVar()
    
            answer2 = Entry(screen, textvariable=a2)
            answer2.pack()
        else:
            previous = Label(screen, text="Vuelve a la pregunta anterior")
            previous.pack()
    
    
    button1 = Button(screen, text="Iniciar", command=question1)
    button1.place(relx=0.5, rely=0.5)
    
    button2 = Button(screen, text="Siguiente", command=question2)
    button2.place(relx=0.5, rely=0.6)
    
    screen.mainloop()
    

    En este código modificado, answer1 se declara como una variable global dentro de la función question1(), lo que permite que otras funciones como question2() la accedan. Luego, en la función check(), utilizamos la variable global answer1 en lugar de declarar una nueva variable answer1 local.

Comments are closed.