• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Gust

Procurador de texto em .txt

8 mensagens neste tópico

Tou a fazer um prgm que anliza ficheiros .txt e devolve uma tring com a palavra procurada.

from Tkinter import *

def editbox (lixo):
    scroll2.grid(row = 1, column = 5)
    text.grid(row = 0, column = 5)
    text.insert(0, (finalresult.get(finalresult.curselection())))
    
def search():
    result = []
    logfile = open((entry.get() + ".txt"), "r")
    log = logfile.read().split("\n")
    logfile.close()
    for x in log:
        x.split(" ")
        result.append(x)
    for x in result:
        x.replace("[Alt]2", "@")
        a = x.find(entry2.get())
        if a != -1:
            finalresult.insert(END, x)
    finalresult.grid(row = 3, column = 0, columnspan = 4, sticky = N+S+W+E, padx = 5, pady = 10)
    scroll.grid(row = 3, column = 4, sticky = N+S+W, pady = 10)  

if __name__ == "__main__":
    tk = Tk()
    main = Frame(tk)
    main.pack()
    scroll = Scrollbar(main)
    scroll2 = Scrollbar(main, orient = HORIZONTAL)
    text = Entry(main, xscrollcommand = scroll2.set)
    finalresult = Listbox(main, yscrollcommand = scroll.set, selectmode = SINGLE)
    entry = Entry(main)
    entry2 = Entry(main)
    entry2.grid(row = 1, column = 3, columnspan = 2)
    entry.grid(row = 0, column = 3, columnspan = 2)
    entry.insert(0, "*")
    entry.selection_range(0, END)
    Button(main, text="Sair", command=main.quit).grid(row = 2, column = 2, padx = 5, pady = 10, columnspan = 2)
    Button(main, text="Procurar", command=search).grid(row = 2, column = 0, padx = 5, pady = 10, columnspan = 2)
    Label(main, text="Ficheiro de log:").grid(row = 0, column = 0, columnspan = 2, pady = 10)
    Label(main, text="Palavra que deseja:").grid(row = 1, column = 0, columnspan = 2)
    finalresult.bind("<Double-Button-1>", editbox)
    scroll.config(command = finalresult.yview)
    scroll2.config(command = text.xview)
    tk.mainloop()

Mas gera o seguinte erro:

Exception in Tkinter callback

Traceback (most recent call last):

  File "C:\Python25\lib\lib-tk\Tkinter.py", line 1403, in __call__

    return self.func(*args)

TypeError: xview() takes exactly 2 arguments (4 given)

Não faço a minima ideia porque.

Alguem podia dar uma olhadela.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Parece que só moro eu nesta secção... :(

Bem, lá vou eu aprender Tkinter.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Realmente o normal é eu a preguntar e tu a responderes.

Mas deixa-me que te diga que este erro me parace estupido.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Corrigir um erro que não tenho é díficil, mas pesquisei e cheguei a esta página. Pode ser que ajude de alguma forma. :down:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já resolvi o erro.

Utilizei o link que me deste Triton.

Obr.

Fica o source:

from Tkinter import *

def scrolling(*L): #esta funcao foi copiada daqui: http://infohost.nmt.edu/tcc/help/pubs/tkinter/entry-scrolling.html
        op, howMany = L[0], L[1]
        if op == "scroll":
            units  =  L[2]
            text.xview_scroll (howMany, units)
        elif op == "moveto":
            text.xview_moveto (howMany)

def gravar ():
    savfile = open((entry3.get()+".txt"), "w")
    savfile.write(text.get())
    savfile.close()

def editbox (lixo):
    scroll2.grid(row = 1, column = 5)
    text.grid(row = 0, column = 5)
    entry3.grid(row = 2, column = 5, sticky = N)
    savebutton.grid(row = 2, column = 5, sticky = S)
    text.insert(0, (finalresult.get(finalresult.curselection())))
    
def search():
    result = []
    logfile = open((entry.get() + ".txt"), "r")
    log = logfile.read().split("\n")
    logfile.close()
    for x in log:
        x.split(" ")
        result.append(x)
    for x in result:
        x.replace("[Alt]2", "@")
        a = x.find(entry2.get())
        if a != -1:
            finalresult.insert(END, x)
    finalresult.grid(row = 3, column = 0, columnspan = 4, sticky = N+S+W+E, padx = 5, pady = 10)
    scroll.grid(row = 3, column = 4, sticky = N+S+W, pady = 10)  

if __name__ == "__main__":
    tk = Tk()
    main = Frame(tk)
    main.pack()
    scroll = Scrollbar(main)
    scroll2 = Scrollbar(main, orient = HORIZONTAL)
    text = Entry(main, xscrollcommand = scroll2.set)
    finalresult = Listbox(main, yscrollcommand = scroll.set, selectmode = SINGLE)
    entry = Entry(main)
    entry2 = Entry(main)
    entry3 = Entry(main)
    entry2.grid(row = 1, column = 3, columnspan = 2)
    entry.grid(row = 0, column = 3, columnspan = 2)
    entry.insert(0, "*")
    entry.selection_range(0, END)
    savebutton = Button(main, text = "Gravar", command = gravar)
    Button(main, text="Sair", command=main.quit).grid(row = 2, column = 2, padx = 5, pady = 10, columnspan = 2)
    Button(main, text="Procurar", command=search).grid(row = 2, column = 0, padx = 5, pady = 10, columnspan = 2)
    Label(main, text="Ficheiro de log:").grid(row = 0, column = 0, columnspan = 2, pady = 10)
    Label(main, text="Palavra que deseja:").grid(row = 1, column = 0, columnspan = 2)
    finalresult.bind("<Double-Button-1>", editbox)
    scroll.config(command = finalresult.yview)
    scroll2.config(command = scrolling)
    tk.mainloop()

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora