Open In App

Change the color of certain words in the tkinter text widget

Last Updated : 01 Aug, 2020
Improve
Improve
Like Article
Like
Save
Share
Report

Python has various options for Graphical User Interface (GUI) development. One of the options is Tkinter. Tkinter and Python together provide a faster way for GUI development. The Tk GUI toolkit provides an object-oriented interface.

For creating GUI applications using Tkinter we have to follow a few steps –

  • Import Tkinter module.
  • Create the main window.
  • Add various widgets to the GUI application as per requirements.
  • Main event loop for every trigger by the user for performing specific actions.

Text widgets have advanced options for editing a text with multiple lines and format the display settings of that text example font, text color, background color. We can also use tabs and marks for locating and editing sections of data. We can also use images in the text and insert borders as well. And everything can be formatted as per the requirements.
 

Syntax : Text ( master, option, … )

Parameters : master represents parent window and option represents various widget options. They can be given as key-value pairs separated by commas.

Return : Return a Text object. 
 

Example 1 : In first example we will add a tag to a section of text by specifying the indices and highlight the selected text. Here, we are using tag_add and tag_config.
 

Python3




# import all functions from the tkinter
from tkinter import *
  
# Create a GUI window  
root = Tk()
  
# Create a text area box   
# for filling or typing the information.
text = Text(root)
  
# insert given string in text area
text.insert(INSERT, "Hello, everyone!\n")
  
text.insert(END, "This is 2020.\n")
  
text.insert(END, "Pandemic has resulted 
             in economic slowdown worldwide")
  
text.pack(expand=1, fill=BOTH)
  
# add tag using indices for the
# part of text to be highlighted
text.tag_add("start", "2.8", "1.13")
  
#configuring a tag called start
text.tag_config("start", background="black",
                 foreground="red")
  
# start the GUI
root.mainloop()


Output : 
 

Example 2 : In this example, user can highlight text as per their wish by selecting the text to be highlighted. Here, we are using tag_configure and tag_add. 
 

Python3




# import all functions from the tkinter   
import tkinter as tk
from tkinter.font import Font
  
# create a Pad class
class Pad(tk.Frame):
  
    # constructor to add buttons and text to the window
    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")
          
        # this will add Highlight button in the window
        self.bold_btn = tk.Button(self.toolbar, text="Highlight",
                                  command=self.highlight_text)
        self.bold_btn.pack(side="left")
  
        # this will add Clear button in the window
        self.clear_btn = tk.Button(self.toolbar, text="Clear",
                                   command=self.clear)
        self.clear_btn.pack(side="left")
  
        # adding the text 
        self.text = tk.Text(self)
        self.text.insert("end", "Pandemic has resulted in economic slowdown worldwide")
        self.text.focus()
        self.text.pack(fill="both", expand=True)
          
        #configuring a tag called start
        self.text.tag_configure("start", background="black", foreground="red")
  
    # method to highlight the selected text
    def highlight_text(self):
          
        # if no text is selected then tk.TclError exception occurs
        try:
            self.text.tag_add("start", "sel.first", "sel.last")        
        except tk.TclError:
            pass
  
    # method to clear all contents from text widget.
    def clear(self):
        self.text.tag_remove("start""1.0", 'end')
  
# function
def demo():
  
    # Create a GUI window 
    root = tk.Tk()
  
    # place Pad object in the root window
    Pad(root).pack(expand=1, fill="both")
  
    # start the GUI
    root.mainloop()
  
# Driver code
if __name__ == "__main__":
  
    # function calling
    demo()


Output :

Before selecting the text and hitting the highlight button :

After selecting the text and hitting the highlight button :

 



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads