2014-09-13 82 views
0

我是python的新手Tkinter.I創建了一個由文本框組成的代碼。我有其他文件菜單按鈕:File,Open,Save,Exit 問題:我不能即使在保存之後也要保存我的文本文件的內容,當點擊打開按鈕時我無法打開我的文件。Tkinter未打開並保存文本文件

編碼:

from Tkinter import * 
import tkMessageBox 
import Tkinter 
import Tkinter as tki 
import tkFileDialog as th1 
import tkFileDialog 

class App(object): 

    def __init__(self,root): 
     Tkinter.Tk.__init__(self) 
     self.root = root 


    # create first Text label, widget and scrollbar 
     self.lbl1 = tki.Label(self, text="Type") 
     self.lbl1.grid(row=0,column=0,padx=2,pady=2) 

     self.txt1 = tki.Text(self, borderwidth=3, relief="sunken", height=4,width=55) 
     self.txt1.config(font=("consolas", 12), undo=True, wrap='word') 
     self.txt1.grid(row=0, column=1, sticky="nsew", padx=2, pady=2) 

     scrollb1 = tki.Scrollbar(txt_frm, command=self.txt1.yview) 
     scrollb1.grid(row=0, column=2, sticky='nsew') 
     self.txt1['yscrollcommand'] = scrollb1.set 
def open_file():         

     f=(tkFileDialog.askopenfilename(
      defaultextension = ".txt", 
      filetypes=[("All Types", ".*")])) 
     filename = f.name  
     return filename 
def file_save(): 
    f = th1.asksaveasfile(mode='w', defaultextension=".txt") 
    filename = f.name 
    return filename   
def Exit(): 
    exit()    

root = tki.Tk() 
menubar=Menu(root) 
root.configure(menu=menubar) 

filemenu=Menu(menubar,tearoff=0) 
menubar.add_cascade(label="File", menu=filemenu) 
filemenu.add_command(label="Save", command=file_save)   
filemenu.add_command(label='Open', command = open_file) 
filemenu.add_command(label='Exit', command = Exit) 
app = App(root) 
root.mainloop() 

請幫我解決我的代碼的答案可以理解的!

回答

1

如果要進行文件操作,請改爲使用askopenfileasksaveasfile

from Tkinter import * 
from tkFileDialog import askopenfile, asksaveasfile 

class App(object): 

    def __init__(self, root): 
     self.lbl1 = Label(root, text="Type") 
     self.lbl1.pack(side=LEFT) 

     self.txt1 = Text(root, borderwidth=3, relief="sunken", height=4, width=55) 
     self.txt1.config(font=("consolas", 12), undo=True, wrap='word') 
     self.txt1.pack(side=LEFT, expand=1, fill=BOTH) 

     scrollb1 = Scrollbar(root, command=self.txt1.yview) 
     scrollb1.pack(side=LEFT, fill=BOTH) 
     self.txt1['yscrollcommand'] = scrollb1.set 

    def open_file(self): 
     f = askopenfile(defaultextension=".txt", filetypes=[("All Types", ".*")]) 
     if not f: 
      return 
     self.txt1.delete(1.0, END) 
     self.txt1.insert(END, f.read()) 
     f.close() 

    def file_save(self): 
     f = asksaveasfile(mode='w', defaultextension=".txt") 
     if not f: 
      return 
     f.write(self.txt1.get(1.0, END)) 
     f.close() 

root = Tk() 
app = App(root) 
menubar = Menu(root) 
root.configure(menu=menubar) 

filemenu = Menu(menubar,tearoff=0) 
menubar.add_cascade(label="File", menu=filemenu) 
filemenu.add_command(label="Save", command=app.file_save) 
filemenu.add_command(label='Open', command=app.open_file) 
filemenu.add_command(label='Exit', command=root.quit) 
root.mainloop() 
+0

其不開放不是顯示在stdout.By路徑了我的意思,更多的享受的方法是,無論我在文本框中鍵入然後,它應該被保存之外的文件。 – 2014-09-13 16:29:27

+0

@adsqwqwe,查看更新後的答案。 – falsetru 2014-09-13 16:37:19

+0

現在它工作完美!謝謝 – 2014-09-13 16:41:28

相關問題