【问题标题】:I have a problem with saving text that user types我在保存用户键入的文本时遇到问题
【发布时间】:2019-09-09 14:36:42
【问题描述】:

基本上,我想制作一个文本编辑器已经很长时间了。 (不是出于编码原因)。从 2 天前开始,我一直在研究它。 一切都很好,直到我发现当你“另存为”项目时,在你写了一些东西之后,你点击按钮保存,它并没有保存它。请帮忙,我是 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()

【问题讨论】:

  • “file1.write(data)”行不足以创建文件并用用户编写的文本填充它。您应该使用 "open(file1, "w").write(data)" 命令而不是该行-例如您在 save_file() 函数中所做的那样-。当然,更合理的做法是创建一个设置为文件的新变量并使用该变量关闭打开的文件。如果我指定的行有效,请告诉我,以便我将其作为详细答案发布。
  • 与问题无关,0.0 不是正确的索引。文本小部件索引是字符串,而不是浮点数,第一个字符是 "1.0"

标签: python tkinter tkinter-entry


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2016-11-04
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    • 2013-03-19
    • 1970-01-01
    • 1970-01-01
    • 2019-05-09
    • 2022-01-12
    相关资源
    最近更新 更多