Problema con tk.Entry y .Get()

Iniciado por DeMoNcRaZy, 27 Diciembre 2021, 20:31 PM

0 Miembros y 1 Visitante están viendo este tema.

DeMoNcRaZy

Buenas,

Tengo un problema con obtener la información de un Entry (Tkinter), con .get()
Me he llevado todo el día mirando y probando ejemplos de internet, ya que hay mucha documentación sobre ello y eso solo obtener la información que se mete en el entry y mostrarlo, nada del otro mundo, pero después de todo el día probando cosas y ejemplos de internet, me lanza error al .get() y no se por que,

yo tengo esto:
Código (python) [Seleccionar]
def prueba():
    ttk.Label(text=name).grid(column=3, row=70, sticky=W)
    print (name)

v1 = StringVar()

e1 = ttk.Entry(root, textvariable=v1).grid(column=3, row=3, sticky=W)

def show():
    print (e1.get(e1))
    e1.delete(0, "end")


ttk.Button(text="Obtener informacion", command=show).grid(column=3, row=5, sticky=W)
ttk.Button(text="Abandonar", command=root.quit).grid(column=3, row=7, sticky=W)


Y lo que quiero es escribir en el entry(box) y al pulsar el botón mostrar lo que hay escrito. Nada del otro mundo, pero no se por que me da error,

este:
Exception in Tkinter callback
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/tkinter/__init__.py", line 1921, in __call__
    return self.func(*args)
  File "/Users/tomas/Downloads/RegistroDeTienda/main.py", line 124, in show
    print (e1.get(e1))
AttributeError: 'NoneType' object has no attribute 'get'
Exception in Tkinter callback
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/tkinter/__init__.py", line 1921, in __call__
    return self.func(*args)
  File "/Users/tomas/Downloads/RegistroDeTienda/main.py", line 124, in show
    print (e1.get(e1))
AttributeError: 'NoneType' object has no attribute 'get'



¿Cual es el problema una librería o como?

Una cosa más como podría hacer que una condición IF se ejecutara al pulsar el botón? ¿creo una clase y hay no?

Cualquier información adicional lo agradecería.

Saludos y FELIZ NAVIDAD
Esta página web no está disponible - Google Chrome

EdePC

Saludos,

Al hacer el .grid pierdes el valor de retorno y tu variable queda vacía, debes hacer el .grid después de crear tu widget a no ser que no quieres guardar el widget en una variable por que no se requiere manipularla luego, por ejemplo con tu Button

Por otro lado también veo que has creado un StringVar() pero no lo estás usando donde debes o quizá no entiendo bien como lo quieres usarlo para mostrar su valor

Te presento el siguiente ejemplo funcional:

Código (python) [Seleccionar]
from tkinter import *
root = Tk()

v1 = StringVar()

e1 = Entry(root, textvariable=v1)
e1.grid(column=3, row=70, sticky=W)

def show() :
  print(v1.get())

Button(text="Obtener info", command=show).grid(column=3, row=3, sticky=W)

root.mainloop()

DeMoNcRaZy

Cita de: EdePC en 27 Diciembre 2021, 21:24 PM
Saludos,

Al hacer el .grid pierdes el valor de retorno y tu variable queda vacía, debes hacer el .grid después de crear tu widget a no ser que no quieres guardar el widget en una variable por que no se requiere manipularla luego, por ejemplo con tu Button

Por otro lado también veo que has creado un StringVar() pero no lo estás usando donde debes o quizá no entiendo bien como lo quieres usarlo para mostrar su valor

Te presento el siguiente ejemplo funcional:

Código (python) [Seleccionar]
from tkinter import *
root = Tk()

v1 = StringVar()

e1 = Entry(root, textvariable=v1)
e1.grid(column=3, row=70, sticky=W)

def show() :
  print(v1.get())

Button(text="Obtener info", command=show).grid(column=3, row=3, sticky=W)

root.mainloop()


Muchas gracias, me ha resuelto el problema y ayudado a entenderlo.
Lo sencillo que era realmente, simplemente estaba mal colocado, pero aun así probe ejemplos de intenert y aun así me daba error, no llegaba a un punto.

Gracias por explicármelo, ya entiendo algo más a la hora de ejecución.

Nuevamente gracias y FELICES FIESTAS!!
Esta página web no está disponible - Google Chrome