elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Obtener palabra a partir de la última letra(widget TEXT)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Obtener palabra a partir de la última letra(widget TEXT)  (Leído 5,416 veces)
El mas antiguo

Desconectado Desconectado

Mensajes: 94



Ver Perfil
Obtener palabra a partir de la última letra(widget TEXT)
« en: 27 Agosto 2022, 20:51 pm »

Hola gente, ¿cómo están?.
Voy a tratar de ser práctico, estoy haciendo una especie de bloc de notas
con la particularidad que tiene un corrector ortográfico y para ello decidí que
al pulsar la tecla <space> se corrija la palabra que se acaba de escribir.-
El caso es que de esta manera obtengo la última letra¿como hacer para
retroceder y obtener la palabra completa?.-
Si la respuesta es regresando con las coordenadas una a una hasta que
encuentre un espacio o la columna sea cero, ya me imagino como hacerlo
la consulta es ¿hay otra manera más práctica?

Código
  1. keyboard.on_press_key("space", partial(corregir.comienzo, editorTexto, ortografia))
  2.  
  3. def comienzo(editorTexto, ortografia, event):
  4.    lineaColumna = editorTexto.index(tk.INSERT)
  5.    print(lineaColumna)

Citar
"la consulta"
a = 1.11
t = 1.10
l = 1.9
u = 1.8
[...]

Slds. Daniel ☕☕☕


« Última modificación: 29 Agosto 2022, 22:47 pm por El mas antiguo » En línea

Danielㅤ


Desconectado Desconectado

Mensajes: 1.681


🔵🔵🔵🔵🔵🔵🔵


Ver Perfil
Re: Obtener palabra a partir de la última letra(widger TEXT)
« Respuesta #1 en: 28 Agosto 2022, 00:15 am »

Hola tocayo querido, hay muchas formas de lograr lo que deseas, una forma que se me ocurrió ahora es por ejemplo guardar la última palabra en una variable, ya que cuando presionas la tecla de espacio es porque una palabra se ha completado por eso dejas el espacio para ingresar la siguiente palabra.

Un ejemplo sería:

La luz de luma (aquí se escribió mal la palabra "luna", entonces cuando se presione el espacio para seguir escribiendo, el código ya guardó en una variable esa última palabra que sería "luma" y al ver que es incorrecta, la cambiará por la correcta que es "luna")


Saludos


En línea

El mas antiguo

Desconectado Desconectado

Mensajes: 94



Ver Perfil
Re: Obtener palabra a partir de la última letra(widger TEXT)
« Respuesta #2 en: 28 Agosto 2022, 00:56 am »

Hola Dani, ¿ cómo estás?.
Gracias por tu tiempo, ahora mismo no me cae la ficha de como lograr
lo que propones, pero me parece una muy buena idea.-
Voy a seguir picando código y seguramente lo voy a lograr, me gusta la idea.-

Slds. Daniel ☕☕☕
En línea

reymosquito

Desconectado Desconectado

Mensajes: 81


Ver Perfil
Re: Obtener palabra a partir de la última letra(widger TEXT)
« Respuesta #3 en: 28 Agosto 2022, 05:12 am »

como te dijeron hay muchas formas de hacerlo, en mi caso te muestro un ejemplo y lo tendrías que adaptar a tus necesidades:
Código
  1. #-*- coding: utf  -8 -*-
  2. import keyboard
  3. import tkinter as tk
  4.  
  5. def  obtener_palabra(event=None):
  6.    palabra = text.get("insert -1c wordstart", "insert -1c wordend" )
  7.    if palabra in "\n ":
  8.        palabra = text.get("insert -1c wordstart", "insert -1c wordend")
  9.    print(repr(palabra))
  10.  
  11. win = tk.Tk()
  12. text = tk.Text(win)
  13. text.pack()
  14. keyboard.on_press_key("space", obtener_palabra)
  15. win.mainloop()

Edito: uso la biblioteca keyboard porque supongo la estás usando, sino es así con el ,método bind ya alcanza.
« Última modificación: 28 Agosto 2022, 05:25 am por reymosquito » En línea

El mas antiguo

Desconectado Desconectado

Mensajes: 94



Ver Perfil
Re: Obtener palabra a partir de la última letra(widger TEXT)
« Respuesta #4 en: 28 Agosto 2022, 15:11 pm »

Hola Rey, el código cumple con el cometido maravillosamente,
le agregué un evento <Return> por obvias razones.
Me surgen dudas con "wordstart", "wordend" que por lo poco que
encontré es exclusiva del widget Text, la utilizaré sin más y ya está
Gracias y hasta la próxima...


Slds. Daniel ☕☕☕
En línea

El mas antiguo

Desconectado Desconectado

Mensajes: 94



Ver Perfil
Re: Obtener palabra a partir de la última letra(widget TEXT)
« Respuesta #5 en: 1 Septiembre 2022, 14:48 pm »

En parte pude disipar mis dudas con "wordstart", "wordend" necesitaba la fila/columna
de la palabra para que al mostrar las posibles correctas en un listbox si se selecciona
alguna pueda reemplazarla en el bloc de notas, créanme que no me dio la cara para
consultarlos(por aquello de ponerme pesado) lo puse para que lo lean entre líneas,
pero no dio resultado, en fin me costó mucho, pero mucho encontrar tan sencilla
solución por eso la exponga para que si alguien necesita algo parecido no reniegue tanto.-

Código
  1. #-*- coding: utf  -8 -*-
  2. import tkinter as tk
  3.  
  4. def  obtener_palabra(event=None):
  5.    palabra = text.get("insert -1c wordstart", "insert -1c wordend" )
  6.    if palabra in "\n ":
  7.        palabra = text.get("insert -1c wordstart", "insert -1c wordend")
  8.  
  9.    inicio = text.index("insert-1c wordstart")
  10.    final  = text.index("insert-1c wordend")
  11.    print(f"{palabra}..: Inicia {inicio} Finaliza {final}")
  12.  
  13. win = tk.Tk()
  14. text = tk.Text(win)
  15. text.pack()
  16. text.bind("<space>", obtener_palabra)
  17. text.focus()
  18.  
  19.  
  20. win.mainloop()


Slds. Daniel ☕☕☕
En línea

reymosquito

Desconectado Desconectado

Mensajes: 81


Ver Perfil
Re: Obtener palabra a partir de la última letra(widget TEXT)
« Respuesta #6 en: 1 Septiembre 2022, 17:41 pm »

Hola Daniel:
Cuando puse el código era un ejemplo con las posibilidades para que investigues, no siempre pongo códigos en su forma final. En ambos ejemplos hay redundancia y omisiones por cierto.
por ejemplo:

Código
  1. final  = text.index("insert-1c wordend")

puede ser tranquilamente resumida a:

Código
  1. final  = text.index("insert -1c")
o
Código
  1. final  = text.index('current')

Donde ambos resultados te darán lo mismo, de igual forma esta bueno que estás  investigando las pistas que te puedan dar y probar distintos modos.

Saludos
« Última modificación: 1 Septiembre 2022, 17:53 pm por reymosquito » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines