2013-05-07 149 views
5

我試圖做一個Tkinter程序,可以打開一個文件到目前爲止,它打開一個tk窗口,其中有一個選項,說文件然後下拉菜單,它說,打開時,你點擊它打開文件窗口,但我無法弄清楚如何真正打開該文件打開文件(Tkinter)

這裏是代碼我嘗試:

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

此代碼的工作,你只需要'返回f.read()' – Jared 2013-05-07 22:49:42

+0

哦確定ahahhaha對不起但說我做了x = f.read我怎麼能使它,所以我可以輸入x功能之外的其他地方對不起我是一個新手 – Serial 2013-05-07 22:51:21

回答

10

你已經打開了該文件,當你做了f = open(filename)。 要將文件的內容打印到控制檯,您可以執行print f.read()。 或者去通過線&文件打印行的內容就像

for line in f: 
    print line 

下面是如何打開一個文件和打印它是在UI內容的例子。 我發現這個例子是有幫助的,它顯示正是你想要的:

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() 

來源:http://zetcode.com/gui/tkinter/dialogs/