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.
- Declare a variable s and get the string input of the user to be searched in the text( in this case the string is typed in ‘edit’ text box window)
- Initialize index value as 1.
- Initialize inner loop.
- Using .search() search for the desired string (in this case s) in the given text and update the current index value till the end of the text.
- Last Index value is the addition of the current index and length of the string.
- Add ‘found’ tag from index 1 to last index whenever a desired string is found in between.
- Change focus to find button
- Once find button is pressed. the string with ‘found’ tags, the string is highlighted in red.
- use .mainloop() for termination as any user will terminate the program
Example 1:
Python3
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' , )
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 :
<img src="https://media.geeksforgeeks.org/wp-content/uploads/20200327124102/tkinter2.png" alt="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
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' , )
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 :
<img src="https://media.geeksforgeeks.org/wp-content/uploads/20200327124532/tkinter21.png" alt="Search String in Text using Python-Tkinter“>
Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape,
GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out -
check it out now!
Last Updated :
26 Oct, 2021
Like Article
Save Article