Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Texto predictivo (tkinter)
#1
Buenas y santas.
¿Saben si existe alguna librería que permita implementar texto predictivo (eso de que vaya arrojando resultados a medida que el usuario va escribiendo), o por el contrario, hay que hacerlo a mano?
Responder
#2
Buenas, Diego.

No conozco ninguna, pero supongo que es algo bastante trivial de implementar. Podés bajarte algún archivo con todas las palabras del español, cargarlas en memoria e ir comparando con el texto ingresado por el usuario. Estamos hablando de unas 100.000 palabras, así que no debería haber ningún problema de memoria ni velocidad de procesamiento.

Saludos
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#3
En realidad, no necesitaría tanto, porque la búsqueda para la predicción se acotaría a un campo de la tabla.
Había pensado en una función de búsqueda que se ejecute por cada caracter ingresado, o sea debería estar continuamente ejecutándose. Y, por cada letra, mostrar coincidencias. Por ejemplo "penal y gol, es gol" se ejecuta en la "p", luego en la "p" seguida de la "e", luego en la "p" seguida de la "e" y la "n". Y devuelve lo que va encontrando en cada ejecución.
¿Es esto posible? Hasta ahora, sólo hice llamados a funciones desde un botón o un click.
Responder
#4
Sí, ese sería el camino. Acá tenés un ejemplo de cómo ejecutar una función por cada letra ingresada en un entry de tkinter: https://recursospython.com/guias-y-manua...n-tkinter/.

Saludos
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#5
Perfectísimo. Voy a investigarlo. Muchas gracias.
Responder
#6
Estuve viendo el link que me suministraste ( Validar el contenido de una caja de texto en Tcl/Tk (tkinter) - Recursos Python ), pero me surge una duda.

¿Lo que hace que la función se ejecute permanentemente es esta línea: return text.isdecimal() ? Porque modifiqué la función de ejemplo (poniendo por ejemplo return otra_función()) pero sólo se ejecuta la primera vez y luego ya no.
Responder
#7
En realidad no, la función debería ejecutar cada vez que el usuario cambia el contenido de la caja de texto. Te conviene retornar siempre True ya que no estás validando nada, simplemente te interesa saber cuándo hay un texto nuevo para sugerir las palabras que correspondan. Te conviene basarte en el código al final del artículo:

Código:
from tkinter import ttk
import tkinter as tk

def validate_entry(action, index, new_text, previous_text, text):
    print("Acción:", action)
    print("Índice (posición) en el que se quiere insertar el texto:", index)
    print("Texto si la validación es verdadera:", new_text)
    print("Contenido anterior de la caja:", previous_text)
    print("Texto que se quiere insertar:", text)
    return True

root = tk.Tk()
root.config(width=300, height=200)
root.title("Mi aplicación")
entry = ttk.Entry(
    validate="key",
    validatecommand=(
        root.register(validate_entry),
        "%d", "%i", "%P", "%s", "%S"
    )
)
entry.place(x=50, y=50, width=150)
root.mainloop()
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder


Salto de foro:


Usuarios navegando en este tema: 2 invitado(s)