2013-05-07 7 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

+0

ahahhaha OKああごめんしかし、私はx = f.readをしたと言う私はそれを作ることができるので、私は関数の外にどこか他のxを入力することができますsorry私は初心者 – Serial

答えて

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/