from Tkinter import *

app = Tk()
text_field = Entry(app)
text_field.pack()
app.mainloop()

Quiero ser capaz de comprobar si text_field es actualmente seleccionado o definido, por lo que sé si debo o no hacer algo con su contenido cuando el usuario presiona enter.

OriginalEl autor cstack | 2009-09-06

1 Comentario

  1. 17

    Si quieres hacer algo cuando el usuario presiona enter sólo si el foco está en el widget de entrada, basta con añadir un enlace a la entrada del widget. Sólo el fuego si ese widget tiene el foco. Por ejemplo:

    >>> from Tkinter import *
    >>> root=Tk()
    >>> e1=Entry(root)
    >>> e1.pack()
    >>> e2=Entry(root)
    >>> e2.pack()
    >>> def handleReturn(event):
    ...     print "return: event.widget is",event.widget
    ...     print "focus is:", root.focus_get()
    ... 
    >>> e1.bind("<Return>", handleReturn)

    Aviso de que el controlador se llama sólo si la primera entrada tiene el foco cuando usted presione la tecla de retorno.

    Si usted realmente quiere un mundial, la unión y la necesidad de saber qué widget tiene el foco, el uso de la focus_get() método en el objeto raíz. En el siguiente ejemplo, un enlace es poner “.” (el principal de nivel superior) para que los incendios no importa lo que haya de enfoque:

    >>> from Tkinter import *
    >>> root=Tk()
    >>> e1=Entry(root)
    >>> e1.pack()
    >>> e2=Entry(root)
    >>> e2.pack()
    >>> def handleReturn(event):
    ...     print "return: event.widget is",event.widget
    ...     print "focus is:",root.focus_get()
    ... 
    >>> root.bind("<Return>",handleReturn)

    Notar la diferencia entre los dos: en el primer ejemplo el controlador solo será llamado cuando usted presione la tecla de retorno en el primer widget de entrada. No hay necesidad de comprobar que el widget tiene el foco. En el segundo ejemplo, el controlador será llamado no importa que el widget tiene el foco.

    Ambas soluciones son buenas dependiendo de lo que usted realmente necesita tener suceder. Si su principal objetivo es sólo hacer algo cuando el usuario presiona regresar en un widget concreto, el uso de la antigua. Si quieres un global de unión, pero en el que la unión de hacer algo diferente, basándose en lo que tiene o no tiene el foco, hacer el último ejemplo.

    Es esto posible, pero sin esperar presionar enter. Por ejemplo, cuando un usuario selecciona la Entrada a escribir algo, es posible saber que lo que pasó?
    sí, es posible.
    Cómo hacerlo? 😀 ¿Dónde puedo encontrar eso?
    se establece un enlace en <FocusIn>.

    OriginalEl autor Bryan Oakley

Dejar respuesta

Please enter your comment!
Please enter your name here