hola,
Estoy haciendo la presentación de un texto con el widget Text, y tengo ciertos problemas con los márgenes.
Los margenes de texto estandar los toma correctamente.
El problema, es cuando trato de insertar una etiqueta, boton, o imagen con unos márgenes definidos en el tag_configure.
Pongo un ejemplo simple, donde se ve el problema (quiero poner la etiqueta con un margen de 45, como el resto del texto):
Edito:
He solucionado el tema, pero con una solución nada elegante, esto es; muy sucia. La pregunta sigue siendo ¿como poner margenes a un objeto?
Estoy haciendo la presentación de un texto con el widget Text, y tengo ciertos problemas con los márgenes.
Los margenes de texto estandar los toma correctamente.
El problema, es cuando trato de insertar una etiqueta, boton, o imagen con unos márgenes definidos en el tag_configure.
Pongo un ejemplo simple, donde se ve el problema (quiero poner la etiqueta con un margen de 45, como el resto del texto):
Código:
from tkinter import *
root = Tk()
caja_texto = Text(root, width=150)
caja_texto.pack()
# creo un identificador/tag para los margenes
caja_texto.tag_configure('var1', lmargin1=45, lmargin2=45)
# el texto de prueba
con1="Postgresql.driver proporciona una interfaz PG-API, postgresql.api, \
a un servidor PostgreSQL utilizando PQ versión 3.0 para facilitar la comunicación. "
con2="Utiliza las funciones extendidas del protocolo para proporcionar \
transmisiones binarias de tipo de datos y declaraciones preparadas en el \
nivel de protocolo para parámetros fuertemente tipados.\n\n"
caja_texto.insert(INSERT,con1, 'var1')
caja_texto.insert(INSERT,con2, 'var1')
# vamos a ver una etiqueta, por sencillez
etiq = Label(caja_texto, text='Etiqueta de Prueba',bd=0, bg='white', \
fg='blue', font='size 20')
# esto funciona
caja_texto.window_create(INSERT, window = etiq)
#esto no funciona
#caja_texto.window_create(INSERT, window = etiq, 'var1')
#caja_texto.window_create(INSERT, window = etiq, ('var1'))
root.mainloop()
He solucionado el tema, pero con una solución nada elegante, esto es; muy sucia. La pregunta sigue siendo ¿como poner margenes a un objeto?
Código:
from tkinter import *
root = Tk()
caja_texto = Text(root, width=150)
caja_texto.pack()
# creo un identificador/tag para los margenes
caja_texto.tag_configure('var1', lmargin1=45, lmargin2=45)
# el texto de prueba
con1="Postgresql.driver proporciona una interfaz PG-API, postgresql.api, \
a un servidor PostgreSQL utilizando PQ versión 3.0 para facilitar la comunicación. "
con2="Utiliza las funciones extendidas del protocolo para proporcionar \
transmisiones binarias de tipo de datos y declaraciones preparadas en el \
nivel de protocolo para parámetros fuertemente tipados.\n\n"
caja_texto.insert(INSERT,con1, 'var1')
caja_texto.insert(INSERT,con2, 'var1')
# vamos a ver una etiqueta, por sencillez
etiq = Label(caja_texto, text='Etiqueta de Prueba',bd=0, bg='white', fg='blue', font='size 20')
# vamos a probar con un texto con un espacio, por si acaso
# el tag de lmargin1 lo hago con 1 menos
# MUY SUCIO
caja_texto.tag_configure('var2', lmargin1=35, lmargin2=35)
caja_texto.insert(INSERT, ' ', 'var2')
# esto funciona
caja_texto.window_create(INSERT, window = etiq)
#esto no funciona
#caja_texto.window_create(INSERT, window = etiq, 'var1')
#caja_texto.window_create(INSERT, window = etiq, ('var1'))
root.mainloop()