Buscar string en texto usando Python-Tkinter

Tkinter es la biblioteca GUI estándar para Python. Proporciona una poderosa interfaz orientada a objetos para el kit de herramientas Tk GUI. En este artículo, veremos cómo buscar una string específica en una ventana de texto determinada usando Tkinter.
NOTA: Para obtener información más detallada sobre Tkinter , consulte Python GUI: método Ttkinter
para crear una función definida por el usuario para buscar (def find) 
Un bucle interno buscará en el widget de texto todas las instancias de cada palabra, etiquetándolas para resaltarlas. La condición de finalización del ciclo es que la palabra actual no se encontró en el widget. Luego, después de que todas las palabras hayan sido etiquetadas, establezca su color. 
 

  • Declare una variable s y obtenga la entrada de string del usuario para buscarla en el texto (en este caso, la string se escribe en la ventana del cuadro de texto ‘editar’) 
     
  • Inicialice el valor del índice como 1. 
     
  • Inicializa el bucle interno. 
     
  • Usando .search() busque la string deseada (en este caso s) en el texto dado y actualice el valor del índice actual hasta el final del texto. 
     
  • El valor del último índice es la suma del índice actual y la longitud de la string. 
     
  • Agregue la etiqueta ‘encontrado’ del índice 1 al último índice cada vez que se encuentre una string deseada en el medio. 
     
  • Cambiar el enfoque para encontrar el botón 
     
  • Una vez que se presiona el botón de búsqueda. la string con etiquetas ‘encontradas’, la string se resalta en rojo. 
     
  • use .mainloop() para la terminación ya que cualquier usuario terminará el programa 
     

Ejemplo 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()

PRODUCCIÓN : 

<img src=»https://media.geeksforgeeks.org/wp-content/uploads/20200327124102/tkinter2.png» alt=»Buscar string en texto usando Python-Tkinter“>

El cuadro de texto más grande es para la entrada de texto y el cuadro de texto más pequeño es para la entrada de string que debe encontrarse en el texto dado y, una vez encontrado, se marca en rojo.
Ejemplo 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()

PRODUCCIÓN : 

<img src=»https://media.geeksforgeeks.org/wp-content/uploads/20200327124532/tkinter21.png» alt=»Buscar string en texto usando Python-Tkinter“>

Publicación traducida automáticamente

Artículo escrito por akshay_sharma08 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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