Dúvida Python

iceraider

Membro
boas ppl, tou com um pequeno problema com um programa em python que ou a desenvolver.


estou a utilizar um widget de texto, o que acontece é que quero colocar o conteúdo de um ficheiro nesse widget. se fosse de forma inicial, ou seja carregar o programa já com a variável do ficheiro iniciada td bem, ele coloca lá o conteúdo. o problema é que quando carrego um ficheiro novo ele não o carrega. alguém tem alguma ideia?

aki fica um exemplo do que já fiz:


Código:
from Tkinter import *
from tkFileDialog   import askopenfilename

def fileOpen():
    filename = askopenfilename()
    teste(filename)

root = Tk()


myText = ''


menubar = Menu(root)

# create a pulldown menu, and add it to the menu bar
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="Open", command=fileOpen)
menubar.add_cascade(label="File", menu=filemenu)

# display the menu
root.config(menu=menubar)
root.title("Calculador de Calorias")
frame1 = Frame(root, width=512, height=5, bg="lightgray")
frame1.pack()

myTextWidget= Text(root) # set up a text widget as a root (window) child

scrollbar = Scrollbar(root)
scrollbar.pack(side=RIGHT, fill=Y)

myTextWidget.config(yscrollcommand=scrollbar.set)
scrollbar.config(command=myTextWidget.yview)

myTextWidget.insert(0.0,myText) # insert the file's text into the text widget
myTextWidget.pack(expand=1, fill=BOTH) # show the widget
myTextWidget.config(state=DISABLED)

def teste(filename):   
    myFile = file (filename)#("resCalorias.txt") # get a file handle
    myText = myFile.read() # read the file to variable
    myFile.close() # close file handle
    myTextWidget.insert(0.0,myText)
    
mainloop()
 
Estive aqui a experimentar um bocado com o teu programa e reparei que consegues carregar ficheiros de texto se apagares a seguinte linha:

Código:
myTextWidget.config(state=DISABLED)
Se fizeres isto parece funcionar bem. O único problema é que se abres um ficheiro com outro já aberto o texto dos dois fica visível.

EDIT: Depois de escrever este post não quis desistir e continuei a brincar com o teu programa. Cheguei à conclusão que se inserires a seguinte linha de código na função teste (antes do insert) quando abrires outro ficheiro o texto do anterior desaparece e ficas com só com o novo.

Código:
myTextWidget.delete(0.0,END)

Espero que ajude! :)
 
Última edição:
Estive aqui a experimentar um bocado com o teu programa e reparei que consegues carregar ficheiros de texto se apagares a seguinte linha:

Código:
myTextWidget.config(state=DISABLED)
Se fizeres isto parece funcionar bem. O único problema é que se abres um ficheiro com outro já aberto o texto dos dois fica visível.


comigo não funcionou. mesmo depois d apagar essa linha continuo sem abrir ficheiros .txt :confused:

d qq forma thx pelo reply.
 
já agora podemos manter o:
Código:
myTextWidget.config(state=DISABLED)
e depois na função teste(filename)

Código:
  myTextWidget.config(state=NORMAL)
  myTextWidget.delete(0.0,END)
  myTextWidget.insert(0.0,myText)
  myTextWidget.config(state=DISABLED)
em que a janela fica sem a possibilidade de edição.

thx mais uma x.
 
Back
Topo