Ich implementiere einen GUI-basierten Texteditor in Python.
Ich habe den Textbereich angezeigt, aber wenn ich versuche, die asksaveasfile-Methode in Tkinter zu verwenden, zeigt es, dass die Datei gespeichert wurde, aber wenn ich versuche, die gleiche Datei in meinem Desktop-Editor zu öffnen, gibt es mir eine leere Datei.Datei speichern Dialog in Tkinter
Nur die Datei wird erstellt und gespeichert. Sein Inhalt ist nicht.
Ich würde gerne wissen, warum. Mache ich etwas falsch? Hier ist mein Code:
from Tkinter import *
import tkMessageBox
import Tkinter
import tkFileDialog
def donothing():
print "a"
def file_save():
name=asksaveasfile(mode='w',defaultextension=".txt")
text2save=str(text.get(0.0,END))
name.write(text2save)
name.close
root = Tk()
root.geometry("500x500")
menubar=Menu(root)
text=Text(root)
text.pack()
filemenu=Menu(menubar,tearoff=0)
filemenu.add_command(label="New", command=donothing)
filemenu.add_command(label="Open", command=donothing)
filemenu.add_command(label="Save", command=file_save)
filemenu.add_command(label="Save as...", command=donothing)
filemenu.add_command(label="Close", command=donothing)
filemenu.add_separator()
filemenu.add_command(label="Exit", command=root.quit)
menubar.add_cascade(label="File", menu=filemenu)
editmenu=Menu(menubar,tearoff=0)
editmenu.add_command(label="Undo", command=donothing)
editmenu.add_command(label="Copy", command=donothing)
editmenu.add_command(label="Paste", command=donothing)
menubar.add_cascade(label="Edit", menu=editmenu)
helpmenu=Menu(menubar,tearoff=0)
helpmenu.add_command(label="Help",command=donothing)
menubar.add_cascade(label="Help",menu=helpmenu)
root.config(menu=menubar)
root.mainloop()
Es funktioniert. Ich denke, es war wegen der Klammer, dass es nicht funktionierte. –
Sie haben gerade eine Änderung erstellt, die besagt, dass die Indizierung bei 1.0 beginnt, aber mein Text wird perfekt gespeichert, auch wenn ich den Startindex auf 0.0 setze. –
@RohitShinde, Es ist okay, den Index als '(0.0, END) anzugeben, um den gesamten Text zu erhalten, aber' (1.0, END) 'ist korrekt, um anzugeben. Wenn Sie die zweite Zeile möchten, sollten Sie '2.x', nicht' 1.x' angeben. – falsetru