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_configure
con 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()