Search String in Text using PythonTkinter (original) (raw)

Search String in Text using Python-Tkinter

Last Updated : 12 Jul, 2025

Tkinter is the standard GUI library for Python. It provides a powerful object-oriented interface to the Tk GUI toolkit. In this article, we'll see how to search for a specific string in a given text window using Tkinter.
NOTE : For more detailed information on Tkinter, refer to Python GUI - Ttkinter
Method to create user-defined function to search(def find)
An inner loop will search the text widget for all instances of each word, tagging them for highlighting. The termination condition for the loop is that the current word was not found in the widget. Then, after all, words have been tagged, set their color.

Example 1:

Python3 `

#Python Program to search string in text using Tkinter

from tkinter import *

#to create a window root = Tk()

#root window is the parent window fram = Frame(root)

#adding label to search box Label(fram,text='Text to find:').pack(side=LEFT)

#adding of single line text box edit = Entry(fram)

#positioning of text box edit.pack(side=LEFT, fill=BOTH, expand=1)

#setting focus edit.focus_set()

#adding of search button butt = Button(fram, text='Find')
butt.pack(side=RIGHT) fram.pack(side=TOP)

#text box in root window text = Text(root)

#text input area at index 1 in text window text.insert('1.0','''Type your text here''') text.pack(side=BOTTOM)

#function to search string in text def find():

#remove tag 'found' from index 1 to END
text.tag_remove('found', '1.0', END) 

#returns to widget currently in focus
s = edit.get() 
if s:
    idx = '1.0'
    while 1:
        #searches for desired string from index 1
        idx = text.search(s, idx, nocase=1, 
                          stopindex=END) 
        if not idx: break
        
        #last index sum of current index and
        #length of text
        lastidx = '%s+%dc' % (idx, len(s)) 
        
        #overwrite 'Found' at idx
        text.tag_add('found', idx, lastidx) 
        idx = lastidx
    
    #mark located string as red
    text.tag_config('found', foreground='red') 
edit.focus_set()

butt.config(command=find)

#mainloop function calls the endless loop of the window, #so the window will wait for any #user interaction till we close it root.mainloop()

`

OUTPUT :

Search String in Text using Python-Tkinter

The larger text box is for the text input and the smaller text box is for the string input that needs to be found in the given text and once found, it is marked in red.
Example 2:

Python3 `

#Python Program to search string in text using Tkinter

from tkinter import *

root = Tk() fram = Frame(root) Label(fram,text='Text to find:').pack(side=LEFT) edit = Entry(fram) edit.pack(side=LEFT, fill=BOTH, expand=1) edit.focus_set() butt = Button(fram, text='Find')
butt.pack(side=RIGHT) fram.pack(side=TOP)

text = Text(root) text.insert('1.0','''Type your text here''') text.pack(side=BOTTOM)

def find():

text.tag_remove('found', '1.0', END) 
s = edit.get() 
if s:
    idx = '1.0'
    while 1:
        idx = text.search(s, idx, nocase=1, 
                          stopindex=END) 
        if not idx: break
        lastidx = '%s+%dc' % (idx, len(s)) 
        text.tag_add('found', idx, lastidx) 
        idx = lastidx
   text.tag_config('found', foreground='red') 
edit.focus_set()

butt.config(command=find) root.mainloop()

`

OUTPUT :

Search String in Text using Python-Tkinter