Estoy trabajando en una herramienta de marcado de texto usando tkinter. Se basa principalmente en el uso de varios métodos de etiquetas en el widget de texto. Sin embargo, lo que me está volviendo loco es mi incapacidad para obtener bordes correctos alrededor del texto etiquetado si hay etiquetas superpuestas.
Considere el siguiente fragmento de texto, etiquetado con dos etiquetas diferentes que se muestran entre corchetes:
[my [example]]
Cuando uso .tag_configure("outer", borderwidth=1, relief="solid") , quiero obtener un borde alrededor de "mi ejemplo", sin embargo, obtengo dos bordes: alrededor de "mi" y alrededor de "ejemplo" si el color de fondo se establece para "ejemplo". Si no hay color de fondo involucrado, funciona como quiero. ¡Pero realmente necesito la capacidad de cambiar los colores de fondo!
Ejemplo de trabajo mínimo:
import tkinter as tk class Application(tk.Frame): def __init__(self, master): super().__init__(master) self.grid(row=0, column=0, sticky=tk.N+tk.S+tk.W+tk.S) self.text = tk.Text(self) self.text.insert("1.0", "my example") self.text.tag_add("outer", "1.0", "end-1c") # "my example" self.text.tag_configure("outer", borderwidth=1, relief="solid") self.text.tag_add("inner", "1.3", "end-1c") # "example" self.text.tag_configure("inner", background="white") # white to see the problem better self.text.grid(row=0, column=0) if __name__ == "__main__": root = tk.Tk() app = Application(root) app.mainloop()Pregunta: ¿hay alguna manera (posiblemente pirateada) de obtener bordes únicos alrededor de tales etiquetas "externas"?
Lo que quiero:
Lo que consigo:
La única solución que conozco es incrustar otro Texto con un borde en el Texto principal usando Text.window_create() y configurar sus etiquetas para los colores internos.