Receita: Busca na caixa de texto no Tkinter
Este exemplo mostra a criação da barra de rolagem progressiva que não destroe o texto no "editbox", criando um "Entry" para o texto a procurar e o botão "procura".
1 # -*- coding: utf-8 -*-
2
3 from Tkinter import *
4
5 class EditBoxWindow:
6
7 def __init__(self, parent = None):
8 if parent == None:
9 parent = Tk()
10 self.myParent = parent
11
12 self.top_frame = Frame(parent)
13
14 # Criando a barra de rolagem
15 scrollbar = Scrollbar(self.top_frame)
16 self.editbox = Text(self.top_frame, yscrollcommand=scrollbar.set)
17 scrollbar.pack(side=RIGHT, fill=Y)
18 scrollbar.config(command=self.editbox.yview)
19
20 # Área do texto
21 self.editbox.pack(anchor=CENTER, fill=BOTH)
22 self.top_frame.pack(side=TOP)
23
24 # Texto a procurar
25 self.bottom_left_frame = Frame(parent)
26 self.textfield = Entry(self.bottom_left_frame)
27 self.textfield.pack(side=LEFT, fill=X, expand=1)
28
29 # Botão Find
30 buttonSearch = Button(self.bottom_left_frame, text='Find', command=self.find)
31 buttonSearch.pack(side=RIGHT)
32 self.bottom_left_frame.pack(side=LEFT, expand=1)
33 self.bottom_right_frame = Frame(parent)
34
35 def find(self):
36 self.editbox.tag_remove('found', '1.0', END)
37 s = self.textfield.get()
38 if s:
39 idx = '1.0'
40 while True:
41 idx =self.editbox.search(s, idx, nocase=1, stopindex=END)
42 if not idx:
43 break
44 lastidx = '%s+%dc' % (idx, len(s))
45 self.editbox.tag_add('found', idx, lastidx)
46 idx = lastidx
47 self.editbox.tag_config('found', foreground='red')
48
49 if __name__=="__main__":
50 root = Tk()
51 myapp = EditBoxWindow(root)
Referência bibliográfica: O'Reilly - Python In A Nutshell
volta ao CookBook