我在保存用户键入的文本时遇到问题

时间:2019-09-09 14:36:42

标签: python tkinter tkinter-entry

基本上,我想花很多时间来制作文本编辑器。 (不是出于编码原因)。我从两天前开始从事这项工作。 一切都很好,直到我发现当您“另存为”项目时,以及在编写某些内容并单击保存按钮后,它都不会保存。请帮忙,我是tkinter的新手,我的灵感来自教程 谢谢。

from tkinter import *
from tkinter import filedialog
filename = ''
def new_file():
    filename = "Untitled"
    text.delete(0.0, END)
def open_file():
    file1=filedialog.askopenfile(mode='r')
    data = file1.read()
    text.delete(0.0, END)
    text.insert(0.0, data)
def save_file():
    filename = file1
    data = text.get(0.0, END)
    file1 = open(filename, "w")
    file1.write(data)
def save_as():
    file1 = filedialog.asksaveasfile(mode = 'w')
    data = text.get(0.0, END)
    file1.write(data)
gui = Tk()
gui.title("Wind Text Editor")
gui.geometry("600x600")
text = Text(gui, height=600, width = 600)
text.pack()
mymenu = Menu()
list1 = Menu()
list2 = Menu()
list3 = Menu()
list4 = Menu()
list1.add_command(label='New', command = new_file)
list2.add_command(label='Open File', command = open_file)
list3.add_command(label='Save File', command = save_file)
list3.add_command(label='Save File As', command = save_as)
list4.add_command(label='Exit', command = gui.quit)
mymenu.add_cascade(label = 'File', menu = list1)
mymenu.add_cascade(label = 'Open', menu = list2)
mymenu.add_cascade(label = 'Save', menu = list3)
mymenu.add_cascade(label = 'Exit', menu = list4)
gui.config(menu=mymenu)
gui.mainloop()

1 个答案:

答案 0 :(得分:0)

您显然正在用file1文件句柄覆盖文件名。从save_file():函数中删除filename = file1

def save_file():
    data = text.get(0.0, END)
    file1 = open(filename, "w")
    file1.write(data)