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.300
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.300
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: 108
Temas: 27
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.300
Temas: 3
Registro en: Feb 2016
Reputación:
71
Daniel, podés preguntar tranquilo y lo pensamos en conjunto!
|