the how entry python python-3.x tkinter get tkinter-entry

python - how - ¿Por qué la función get de Tkinter Entry no devuelve nada?



size entry tkinter (4)

Parece que puede estar confundido en cuanto a cuándo se ejecutan los comandos. En su ejemplo, está llamando al método get antes de que la GUI tenga la oportunidad de mostrarse en la pantalla (lo que sucede después de llamar a mainloop .

Intente agregar un botón que llame al método get . Esto es mucho más fácil si escribe su aplicación como clase. Por ejemplo:

import tkinter as tk class SampleApp(tk.Tk): def __init__(self): tk.Tk.__init__(self) self.entry = tk.Entry(self) self.button = tk.Button(self, text="Get", command=self.on_button) self.button.pack() self.entry.pack() def on_button(self): print(self.entry.get()) app = SampleApp() app.mainloop()

Ejecute el programa, escriba en el widget de entrada y luego haga clic en el botón.

Intento usar un campo de Entry para obtener una entrada manual y luego trabajar con esa información.

Todas las fuentes que he encontrado afirman que debo usar la función get() , pero aún no he encontrado un mini ejemplo que funcione, y no puedo hacerlo funcionar.

Espero que alguien me pueda decir lo que estoy haciendo mal. Aquí hay un mini archivo:

from tkinter import * master = Tk() Label(master, text="Input: ").grid(row=0, sticky=W) entry = Entry(master) entry.grid(row=0, column=1) content = entry.get() print(content) # does not work mainloop()

Esto me da un campo de Entry que puedo tipear, pero no puedo hacer nada con los datos una vez que están escritos.

Sospecho que mi código no funciona porque inicialmente, la entry está vacía. Pero entonces, ¿cómo puedo acceder a los datos de entrada una vez que se han ingresado?


También podría usar una variable StringVar , incluso si no es estrictamente necesario:

v = StringVar() e = Entry(master, textvariable=v) e.pack() v.set("a default value") s = v.get()

Para obtener más información, consulte esta página en effbot.org .


lo que podrías hacer es

from tkinter import * master = Tk() entryb1 = StringVar Label(master, text="Input: ").grid(row=0, sticky=W) entry = Entry(master, textvariable=entryb1) entry.grid(row=1, column=1) b1 = Button(master, text="continue", command=print_content) b1.grid(row=2, column=1) def print_content(): global entryb1 content = entryb1.get( print(content) master.mainloop()

lo que hiciste mal no fue ponerlo dentro de una función Definir, entonces no habías usado la función ".get" con la variable de texto que habías establecido


Un simple ejemplo sin clases:

from tkinter import * master = Tk() # Create this method before you create the entry def return_entry(en): """Gets and prints the content of the entry""" content = entry.get() print(content) Label(master, text="Input: ").grid(row=0, sticky=W) entry = Entry(master) entry.grid(row=0, column=1) # Connect the entry with the return button entry.bind(''<Return>'', return_entry) mainloop()