Saltar al contenido

¿Cómo cambiar el color de ciertas palabras en el widget de texto tkinter?

Contamos con tu ayuda para difundir nuestros tutoriales acerca de las ciencias informáticas.

Solución:

La idea principal es aplicar etiquetas a las partes del texto que desea personalizar. Puedes crear tus etiquetas usando el método tag_configurecon un estilo específico, y luego solo necesita aplicar esta etiqueta a la parte del texto que desea cambiar usando el método tag_add. También puede eliminar las etiquetas utilizando el método tag_remove.

El siguiente es un ejemplo que utiliza tag_configure, tag_add y tag_remove métodos.

#!/usr/bin/env python3

import tkinter as tk
from tkinter.font import Font

class Pad(tk.Frame):

    def __init__(self, parent, *args, **kwargs):
        tk.Frame.__init__(self, parent, *args, **kwargs)

        self.toolbar = tk.Frame(self, bg="#eee")
        self.toolbar.pack(side="top", fill="x")

        self.bold_btn = tk.Button(self.toolbar, text="Bold", command=self.make_bold)
        self.bold_btn.pack(side="left")

        self.clear_btn = tk.Button(self.toolbar, text="Clear", command=self.clear)
        self.clear_btn.pack(side="left")

        # Creates a bold font
        self.bold_font = Font(family="Helvetica", size=14, weight="bold")

        self.text = tk.Text(self)
        self.text.insert("end", "Select part of text and then click 'Bold'...")
        self.text.focus()
        self.text.pack(fill="both", expand=True)

        # configuring a tag called BOLD
        self.text.tag_configure("BOLD", font=self.bold_font)

    def make_bold(self):
        # tk.TclError exception is raised if not text is selected
        try:
            self.text.tag_add("BOLD", "sel.first", "sel.last")        
        except tk.TclError:
            pass

    def clear(self):
        self.text.tag_remove("BOLD",  "1.0", 'end')


def demo():
    root = tk.Tk()
    Pad(root).pack(expand=1, fill="both")
    root.mainloop()


if __name__ == "__main__":
    demo()

si no sabes que sel.first y sel.last son, echa un vistazo a esta publicación o esta referencia.

He creado un cliente de chat. Destaqué ciertas partes de la conversación usando una costumbre bastante fácil de usar Text widget que le permite aplicar etiquetas usando expresiones regulares. Se basó en la siguiente publicación: Cómo resaltar texto en un widget de texto tkinter.

Aquí tienes un ejemplo de uso:

# "text" is a Tkinter Text

# configuring a tag with a certain style (font color)
text.tag_configure("red", foreground="red")

# apply the tag "red" 
text.highlight_pattern("word", "red")

Echa un vistazo a este ejemplo:

from tkinter import *

root = Tk()

text = Text(root)
text.insert(INSERT, "Hello, world!n")
text.insert(END, "This is a phrase.n")
text.insert(END, "Bye bye...")
text.pack(expand=1, fill=BOTH)

# adding a tag to a part of text specifying the indices
text.tag_add("start", "1.8", "1.13")
text.tag_config("start", background="black", foreground="yellow")

root.mainloop()

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *