Autor Tema: Seleccionar palabra en widget TEXT en tkinter.  (Leído 4850 veces)

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

Desconectado Daniel1952

  • PIC16
  • ***
  • Mensajes: 127
Seleccionar palabra en widget TEXT en tkinter.
« en: 06 de Mayo de 2022, 12:04:20 »
Hola Picuino ¿cómo estás?, hola gente.
La consulta es para saber si conocen algún método que reemplace
lo que yo logro a mi manera, esto funciona, pero tengo una dificultad,
Si la palabra que selecciono (con doble click) no tiene un espacio al
final "search" no tiene como saber el final de la palabra seleccionada y
el comienzo de la próxima.-
De más esta decir que esto ocurre solamente si la palabra es la última y
no encuentra un espacio o si es la última y la próxima comienza en la
próxima fila.-

Código: [Seleccionar]
def inicioFinal():
    inicio = texto.index("insert")
    try:
        final = texto.search(" ", inicio, stopindex=END)
        palabra = texto.get(inicio, final)
    except:
        MessageBox.showwarning("!!! Atención !!!", "Debe dejar un espacio al final de la palabra.")
    else:   
        encontradas = corregir.principal(palabra)
        if encontradas:
            mostrar(encontradas, inicio, final)

Bueno, para iniciar creo que es suficiente, Uds. me dirán.-
Slds. Daniel ☕☕☕
« Última modificación: 06 de Mayo de 2022, 13:43:00 por Daniel1952 »
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Seleccionar palabra en widget TEXT en tkinter.
« Respuesta #1 en: 07 de Mayo de 2022, 09:31:48 »
Hola Daniel.
¿Puedes poner un programa que funcione para poder probarlo?
No tengo claro cual es el texto.

Un saludo

Desconectado Daniel1952

  • PIC16
  • ***
  • Mensajes: 127
Re:Seleccionar palabra en widget TEXT en tkinter.
« Respuesta #2 en: 07 de Mayo de 2022, 13:36:42 »
Hola, buen día.-
Dejo un programita como referencia porque el principal, lo estoy
modificando casi todo, este seguramente te servirá como referencia.-
Además de la búsqueda del método que reemplace esto, no logro
entender por qué si seleccionas con doble clic el resultado es distinto
que hacerlo con un botón, seguiremos investigando.-

Código: [Seleccionar]
from tkinter import *
from tkinter import ttk
 
def inicioFinal():
    inicio = text.index("insert")
    try:
        final = text.search(" ", inicio, stopindex=END)
        palabra = text.get(inicio, final)
    except:
        texto = "Debe dejar un espacio después de la última palabra......"
        messagebox.showinfo("!!! Atención!!!", texto)
    else:   
        final = f" La palabra <{palabra}> inicia en la fila/columna {inicio} y finaliza en la fila/columna {final}"
        print(final)
   

root = Tk()
root.geometry("350x200+500+500")

text = Text(root, width=40, height=7)
#text.bind('<Double-1>',inicioFinal)
text.place(x=10, y=10, )
boton = ttk.Button(root, text="Obtener", command=inicioFinal)
boton.place(x=120, y=140, width=100, height=30)

text.insert("insert", "Tú eres muy buena persona")

root.mainloop()


Slds. Daniel ☕☕☕
« Última modificación: 08 de Mayo de 2022, 09:31:17 por Daniel1952 »
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Seleccionar palabra en widget TEXT en tkinter.
« Respuesta #3 en: 08 de Mayo de 2022, 17:17:48 »
Lo siento Daniel, me pierdo con Tkinter.
He intentado manejar la cadena de texto para buscar de otra manera o para forzar el añadido de un espacio al final, pero no me sale.
Un saludo.

Desconectado Daniel1952

  • PIC16
  • ***
  • Mensajes: 127
Re:Seleccionar palabra en widget TEXT en tkinter.
« Respuesta #4 en: 08 de Mayo de 2022, 21:19:31 »
Hola gente, ¿Cómo están?, tuve un domingo muy productivo,
entre otras cosas pude lograr lo de seleccionar palabras,
dejo el programa por si alguien tiene las mismas dificultades.-
Por último disculpas Picuino si te quite demasiado tiempo.-

Código: [Seleccionar]
#-------------------------------------------------------------------------------
# Name:        módulo1
# Purpose:     selección(inicio-final)
#
# Author:      Daniel
#
# Created:     08/05/2022
# Copyright:   (c) Daniel 2022
# Licence:     <your licence>
#-------------------------------------------------------------------------------
from tkinter import ttk, messagebox
import tkinter as tk
from functools import partial


def get_selection(text):
    # Obtener los índices del inicio y fin de la selección
    try:
        first = text.index(tk.SEL_FIRST)
    except:
        messagebox.showinfo(" Atención", "No tiene nada seleccionado", )
    else:
        last = text.index(tk.SEL_LAST)
        palabra = text.get(first, last)
        final = f" La palabra seleccionada es...: <{palabra}>\n\nInicia en la fila/columna {first}\n"\
        f"\nfinaliza en la fila/columna {last}"
        messagebox.showinfo(" Información", final)



def main():

    root = tk.Tk()
    root.geometry("400x200+500+500")

    text = tk.Text(root, width = 50, heigh = 3)
    text.pack()

    text.insert(tk.INSERT, "Amo programar y mejor si es con Python")

    button = ttk.Button(text="Obtener selección", command=partial(get_selection, text))
    button.place(x=140, y=50, width = 115, heigh = 40 )

    root.mainloop()

if __name__ == '__main__':
    main()

Slds. Daniel ☕☕☕
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Seleccionar palabra en widget TEXT en tkinter.
« Respuesta #5 en: 09 de Mayo de 2022, 11:55:22 »
 ((:-)) ((:-))
Mucho ánimo Daniel. A veces es tedioso encontrar el código adecuado para conseguir lo que uno quiere, pero cuando se consigue es todo un triunfo.
Saludos.

Desconectado Daniel1952

  • PIC16
  • ***
  • Mensajes: 127
Re:Seleccionar palabra en widget TEXT en tkinter.
« Respuesta #6 en: 09 de Mayo de 2022, 15:19:27 »
Hola, ¿cómo están?, tal cual Picuino, hay momentos que si no haría
más de 30 años que estudio/practico control mental, habría comprado
muchos teclados, pero como vos decís cuando logras algo que te costó
es como un triunfo muy enriquecedor, sigamos adelante.-
PD: si en algún momento te surgen dudas o alguien te consulta sobre
el widget TEXT tengo una página muy interesante que los puede ayudar.-

Slds. Daniel ☕☕☕
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-


 

anything