2013-05-07 20 views
5

Próbuję utworzyć program Tkinter, który może otworzyć plik do tej pory, otwiera okno tk, które ma opcję "Plik", a następnie otwiera menu i otwiera się po kliknięciu otwiera okno pliku, ale nie mogę dowiedzieć się, jak faktycznie otworzyć ten plikPlik otwierający (Tkinter)

Oto kod iM starając:

from Tkinter import * 
from tkFileDialog import askopenfilename 
def openfile(): 

    filename = askopenfilename(parent=root) 
    f = open(filename) 
    f.read() 

root = Tk() 
menubar = Menu(root) 
filemenu = Menu(menubar, tearoff=0) 
filemenu.add_command(label="Open", command=openfile) 
filemenu.add_separator() 
filemenu.add_command(label="Exit", command=root.quit) 
menubar.add_cascade(label="File", menu=filemenu) 

root.config(menu=menubar) 
root.mainloop() 

Here is what the window looks like

+1

Ten kod działa, wystarczy 'f.read return()' – Jared

+0

oh ok ahahhaha przykro ale powiedz, że zrobiłem x = f.read jak mogę to zrobić, żebym mógł wprowadzić x gdzieś poza funkcją sorry im a newbie – Serial

Odpowiedz

10

już otwarty plik, jeśli nie f = open(filename). Aby wydrukować zawartość pliku na konsoli, można wykonać print f.read(). Albo przejść przez pliku linia po linii & wydrukować zawartość jak

for line in f: 
    print line 

Oto przykład tego, jak otworzyć plik i wydrukować jego zawartość w interfejsie użytkownika. Znalazłem ten przykład, aby być pomocnym i pokazuje dokładnie to, co chcesz:

from Tkinter import Frame, Tk, BOTH, Text, Menu, END 
import tkFileDialog 

class Example(Frame): 

    def __init__(self, parent): 
     Frame.__init__(self, parent) 

     self.parent = parent   
     self.initUI() 

    def initUI(self): 

     self.parent.title("File dialog") 
     self.pack(fill=BOTH, expand=1) 

     menubar = Menu(self.parent) 
     self.parent.config(menu=menubar) 

     fileMenu = Menu(menubar) 
     fileMenu.add_command(label="Open", command=self.onOpen) 
     menubar.add_cascade(label="File", menu=fileMenu)   

     self.txt = Text(self) 
     self.txt.pack(fill=BOTH, expand=1) 


    def onOpen(self): 

     ftypes = [('Python files', '*.py'), ('All files', '*')] 
     dlg = tkFileDialog.Open(self, filetypes = ftypes) 
     fl = dlg.show() 

     if fl != '': 
      text = self.readFile(fl) 
      self.txt.insert(END, text) 

    def readFile(self, filename): 

     f = open(filename, "r") 
     text = f.read() 
     return text 


def main(): 

    root = Tk() 
    ex = Example(root) 
    root.geometry("300x250+300+300") 
    root.mainloop() 


if __name__ == '__main__': 
    main() 

Źródło: http://zetcode.com/gui/tkinter/dialogs/