Mensajes: 155 
	Temas: 57 
	Registro en: Jan 2018
	
 Reputación: 
 0
	 
 
	
	
		Hola Francisco, hola gente ¿Cómo están?. 
Dejo a continuación las 2 funciones para que se entienda 
lo que no logro conseguir, en la primera al insertar la línea 
de texto sale todo desalineado(la columna) y en la segunda 
perfecto, ¿Qué estoy haciendo mal?..- 
Les comento que es la primera vez que utilizo el  widget Text 
y por lo que estuve leyendo tiene mas de 260 atributos y métodos 
por lo tanto parece un widget muy potente, lo que ocurre es que me 
falta tan solo eso para concluir mi traductor, desde ya muchas  
gracias por el tiempo que le dediquen.-
 Código: def autocompletar(traductor, texto): 
    resultado.config(state=tk.NORMAL) 
    resultado.delete("1.0","end") 
    total = len(texto) 
    if total >= 1:     
        for trad in traductor: 
            ingles=trad[0] 
            filtro = ingles[0:total] 
            if texto == filtro: 
                espaniol = trad[1] 
                final = f"{ingles.ljust(15, ' ')}{espaniol}\n"  
                resultado.insert(tk.INSERT, final) 
    resultado.config(state='disabled') 
    return True
  
Código: import codecs 
import re 
 
palabras = [] 
final=0 
with codecs.open('traductor.txt', 'r', encoding='utf-8') as archivo: 
    for linea in archivo: 
        tmpLinea = linea.strip() 
        linea = tmpLinea.split(',') 
        palabras.append(linea) 
        final += 1 
        if final == 10: 
            break 
 
for pal in palabras: 
    ingles = pal[0] 
    espaniol = pal[1] 
    final = f"{ingles.ljust(15, ' ')}{espaniol}"  
    print(final)
 
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.-
 
	
	
 
 
	
	
	
		
	Mensajes: 1.308 
	Temas: 3 
	Registro en: Feb 2016
	
 Reputación: 
 71
	 
 
	
	
		Hola, Daniel, ¿cómo estás? 
 
No trabajé mucho con el tk.Text. ¿Podrías poner un código mínimo ejecutable que reproduzca el error que estás obteniendo (o el comportamiento no deseado, mejor dicho)? Según lo que comentás supongo que se debe a que la diferencia en las longitudes de la consola y el tk.Text en este caso. 
 
Saludos
	 
	
	
	
	
 
 
	
	
	
		
	Mensajes: 155 
	Temas: 57 
	Registro en: Jan 2018
	
 Reputación: 
 0
	 
 
	
	
		Hola Francisco, estoy muy bien, dejo el código y te comento que debido 
a que la impaciencia me gano,  lo reemplace por un treeview y funciona muy 
bien pero igual me interesa demasiado este widget.- 
Ya me pongo a programar un editor de texto para aprender el  widget text, parece 
muy interesante.-
 Código: from tkinter import ttk 
import tkinter as tk 
from tkinter import * 
from functools import partial 
import codecs 
import re 
 
def centrarVentana(ventana): 
    ancho_ventana = 465 
    alto_ventana = 265 
 
    x_ventana = ventana.winfo_screenwidth() // 2 - ancho_ventana // 2 
    y_ventana = ventana.winfo_screenheight() // 2 - alto_ventana // 2 
 
    posicion = str(ancho_ventana) + "x" + str(alto_ventana) + "+" + str(x_ventana) + "+" + str(y_ventana) 
    ventana.geometry(posicion) 
 
    ventana.resizable(0,0) 
 
def cargarEnLista(): 
    palabras = [] 
    with codecs.open('traductor.txt', 'r', encoding='utf-8') as archivo: 
        for linea in archivo: 
            tmpLinea = linea.strip() 
            linea = tmpLinea.split(',') 
            palabras.append(linea) 
 
    return palabras 
 
def traducir(traductor, texto): 
    tradIe = "                   Ingles/Español\n\n" 
    tradEi = "                   Español/Ingles\n\n" 
    resultado.config(state=tk.NORMAL) 
    resultado.delete("1.0","end") 
    if len(texto) >= 1: 
        for trad in traductor: 
            if texto == trad[0]: 
                resultado.insert('1.1', tradIe) 
                resultado.insert('3.1', trad[1]) 
                break 
            else: 
                if texto in trad[1]: 
                    resultado.insert('1.1', tradEi) 
                    resultado.insert('3.1', trad[0]) 
                    break 
     
    resultado.config(state='disabled') 
    return True 
 
def autocompletar(traductor, texto): 
    resultado.config(state=tk.NORMAL) 
    resultado.delete("1.0","end") 
    total = len(texto) 
    if total >= 1:     
        for trad in traductor: 
            ingles=trad[0] 
            filtro = ingles[0:total] 
            if texto == filtro: 
                espaniol = trad[1] 
                final = f"{ingles} --  {espaniol}\n" 
                resultado.insert('1.0', final) 
    resultado.config(state='disabled') 
    return True 
 
 
 
 
root = tk.Tk() 
root.title(" Traductor Ingles/español") 
centrarVentana(root) 
 
# Caja para mostrar traducción 
resultado = tk.Text(root, width=38, height=4, font=("Verdana",12), 
    state='disabled', borderwidth=3, fg="blue", padx=10, pady=10) 
resultado.place(x=10, y=10) 
 
# Scrollbar 
sb = Scrollbar(root) 
sb.place(x=410, y=3, height=110) 
sb.config(command=resultado.yview) 
resultado.config(yscrollcommand=sb.set) 
 
# Etiquetas traductor. 
traductorLabel = ttk.Label(root, text = "Traductor", font=("Verdana", 12))  
traductorLabel.place(x=13, y=123) 
 
# Etiquetas autocompletar. 
autoLabel = ttk.Label(root, text = "Autocompletar", font=("Verdana", 12))  
autoLabel.place(x=240, y=123) 
 
 
# Entrada traductor. 
varTraductor = tk.StringVar() 
traductorEntry = ttk.Entry(root, textvariable=varTraductor, 
    validate="key", font=("Verdana", 11)) 
traductorEntry.place(x=15, y=150, width=200, height=25) 
 
traductorEntry.focus() 
 
# Entrada autocompletar. 
varAuto = tk.StringVar() 
autoEntry = ttk.Entry(root, textvariable=varAuto, 
    validate="key", font=("Verdana", 11)) 
autoEntry.place(x=240, y=150, width=200, height=25) 
 
 
# Botón cerrar 
botonCerrar = ttk.Button(root, text="Cerrar", 
    command = root.destroy) 
botonCerrar.place(x=205, y=200, width=80, height=40)         
 
traductor=cargarEnLista() 
 
traductorEntry.config(validatecommand=(root.register(partial(traducir, traductor)), "%P")) 
autoEntry.config(validatecommand=(root.register(partial(autocompletar, traductor)), "%P")) 
 
root.mainloop()
 
Te dejo una idea sobre la BD
 Cita:adult,adulto 
afternoon,tarde 
as,como 
at,en 
all,todos 
about,acerca de 
also,además  -  también 
agent,agente 
ahead,adelante 
agency,agencia 
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.-
 
	
	
 
 
	
	
	
		
	Mensajes: 1.308 
	Temas: 3 
	Registro en: Feb 2016
	
 Reputación: 
 71
	 
 
	
	
		Excelente, Daniel. 
Efectivamente el control tkinter.Text es muy potente. Hay de hecho un editor de código programado en Python y tkinter llamado  Thonny que emplea ese control para permitirle al usuario escribir código de Python con resaltado de sintaxis y otras funcionalidades interesantes.
 
Saludos
	  
	
	
	
	
 
 
	
	
	
		
	Mensajes: 109 
	Temas: 28 
	Registro en: Feb 2019
	
 Reputación: 
 0
	 
 
	
	
		 (29-03-2022, 03:16 PM)Daniel.py escribió:  Hola Francisco, hola gente ¿Cómo están?. 
Dejo a continuación las 2 funciones para que se entienda 
lo que no logro conseguir, en la primera al insertar la línea 
de texto sale todo desalineado(la columna) y en la segunda 
perfecto, ¿Qué estoy haciendo mal?..- 
Les comento que es la primera vez que utilizo el  widget Text 
y por lo que estuve leyendo tiene mas de 260 atributos y métodos 
por lo tanto parece un widget muy potente, lo que ocurre es que me 
falta tan solo eso para concluir mi traductor, desde ya muchas  
gracias por el tiempo que le dediquen.- 
 
 
Código: def autocompletar(traductor, texto): 
    resultado.config(state=tk.NORMAL) 
    resultado.delete("1.0","end") 
    total = len(texto) 
    if total >= 1:     
        for trad in traductor: 
            ingles=trad[0] 
            filtro = ingles[0:total] 
            if texto == filtro: 
                espaniol = trad[1] 
                final = f"{ingles.ljust(15, ' ')}{espaniol}\n"  
                resultado.insert(tk.INSERT, final) 
    resultado.config(state='disabled') 
    return True
  
 
Código: import codecs 
import re 
 
palabras = [] 
final=0 
with codecs.open('traductor.txt', 'r', encoding='utf-8') as archivo: 
    for linea in archivo: 
        tmpLinea = linea.strip() 
        linea = tmpLinea.split(',') 
        palabras.append(linea) 
        final += 1 
        if final == 10: 
            break 
 
for pal in palabras: 
    ingles = pal[0] 
    espaniol = pal[1] 
    final = f"{ingles.ljust(15, ' ')}{espaniol}"  
    print(final)
  
Slds. Daniel ☕☕☕ 
Buenas Daniel:
 https://www.tutorialspoint.com/how-do-i-...ext-widget
Quizá esto te sirva de ayuda aunque eso si está en inglés. (Bastante clarito).
 
Parece que existe la opción text.tag_configure para añadir justify al texto.
	  
	
	
	
	
 
 
	
	
	
		
	Mensajes: 155 
	Temas: 57 
	Registro en: Jan 2018
	
 Reputación: 
 0
	 
 
	
	
		Gracias, mil gracias por la sugerencia, te comento, no puedo zafar 
del lio que me metí tratando de hacer un editor de texto con el widget 
“text” ni bien avance con este atolladero que tengo en este momento 
te comento que paso.- 
Para colmo de males no puedo consultar en el foro porque Francisco 
me comento que no tiene experiencia con ese widget(espero que no lea esto        ),  
así que estoy “solo” como loco malo, nos estamos leyendo…
 
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.-
 
	
	
 
 
	
	
	
		
	Mensajes: 1.308 
	Temas: 3 
	Registro en: Feb 2016
	
 Reputación: 
 71
	 
 
	
	
		Daniel, podés preguntar tranquilo y lo pensamos en conjunto!   
	 
	
	
	
	
 
 
	 
 |