TransWikia.com

Como pasar el valor del entry que hay en una funcion a otra funcion diferente en python?

Stack Overflow en español Asked by Majestic99 on August 20, 2020

Estoy intentando usar obtener un valor de un entry que existe en una funcion (ventana de tkinter con root) a otra funcion que es donde se llegara con un boton de enviar usando command.

from tkinter import *
from tkinter import messagebox
from tkinter import ttk

root = Tk()
root.title('Nutricion y salud')
root.geometry("200x200+290+120")

lbltitle = Label(root, text="Nutricion y Salud")
lbltitle.place(x=50, y=20)

def registrarse():
    def enviar1():
        print("Enviado usuario: ",var_nombres.get()) #Aqui deberia llegar el valor del entry pero llega vacio siempre

    print("Registrando...")
    root2 = Tk()
    root2.title('Registrando')
    root2.geometry("400x500+500+120")

    lblFname = Label(root2, text="Nombres")
    lblFname.place(x=45, y=50)
    var_nombres = StringVar()
    txtFname = Entry(root2, textvariable=var_nombres)
    txtFname.place(height=20, width=130, x=45, y=70)

    btEnviar1 = Button(root2, text="Enviar", command=enviar1)
    btEnviar1.place(x=45, y=300)
    root2.mainloop()

btReg = Button(root, text="Registrarse", command = registrarse)
btReg.place(x=70, y=65)

root.mainloop()

Intente pasarle como argumento desde el commando usando un lambda pero tampoco obtuve resultado, tampoco sirve si defino la variable afuera de las funciones

One Answer

prueba cambiando tu segunda ventana por una Toplevel y borrale el mainloop() que esta en la funcion registrarse, y debe funcionarte.

de esta forma debe quedarte:

def registrarse():
   def enviar1():
      print("Enviado usuario:",var_nombres.get())

   print("Registrando...")
   root2 = Toplevel()
   root2.title('Registrando')
   root2.geometry("400x500+500+120")

   lblFname = Label(root2, text="Nombres")
   lblFname.place(x=45, y=50)
   var_nombres = StringVar()
   txtFname = Entry(root2, textvariable=var_nombres)
   txtFname.place(height=20, width=130, x=45, y=70)

   btEnviar1 = Button(root2, text="Enviar", command=enviar1)
   btEnviar1.place(x=45, y=300)

Correct answer by Salvador Mellado on August 20, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP