associação pythonbrasil[11] django zope/plone planet Início Logado como (Entrar)

Revisão 2e 2006-08-03 17:11:02

Excluir mensagem

BuscaTkinter

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

LeonardoGregianin