"File Name Not Valid" Python Tkinter

"File Name Not Valid" Python Tkinter

我正在制作一个简单的文本编辑器,每当我尝试保存文件时,它总是给我这个错误。

我将其保存为普通文本文件,但我找不到发生这种情况的原因。我试过将它保存到不同的位置,进行了一些调试尝试。没有什么。有人可以帮我吗?

代码:

from tkinter import* 
from tkinter import filedialog 
from tkinter import font 

root = Tk() 
root.title("NewNotepad")
root.geometry("1200x660") 

def new_file(): 
    my_text.delete("1.0", END)
    root.title('New File')
    status_bar.config(text="New File") 

def open_file(): 
     my_text.delete("1.0", END)
     text_file = filedialog.askopenfilename(title="Open File", filetypes=(("Text Files", "*txt"), ("HTML Files", "*html")))  
     name = text_file 
     status_bar.config(text=name) 
     text_file = open(text_file, 'r')
     stuff = text_file.read() 
     my_text.insert(END, stuff) 
     text_file.close() 

def save_as_file(): 
    text_file = filedialog.asksaveasfilename(defaultextension=".*", title="Save File", initialdir="C:/gui/", filetypes=(("Text Files", "*txt"), ("HTML Files", "*html"))) 
    if text_file: 
        name = text_file 
        name = name.replace("C:/gui/", "") 
        root.title(f'{name} - NewNotepad') 
        text_file = open(text_file, 'w') 
        text_file.write(my_text.get(1.0, END))  
        text_file.close() 

my_frame = Frame(root)
my_frame.pack(pady=5)

text_scroll = Scrollbar(my_frame) 
text_scroll.pack(side=RIGHT, fill=Y) 

my_text = Text(my_frame, width=97, height=25, font=("Helvetica", 16), selectbackground="Light Blue", selectforeground="Black", undo=True, yscrollcommand=text_scroll.set) 
my_text.pack() 

text_scroll.config(command=my_text.yview)

my_menu =  Menu(root)
root.config(menu=my_menu)

file_menu = Menu(my_menu, tearoff=False)
my_menu.add_cascade(label="File", menu=file_menu)
file_menu.add_command(label="New", command=new_file) 
file_menu.add_command(label="Open", command=open_file)
file_menu.add_command(label="Save")
file_menu.add_command(label="Save As", command=save_as_file) 
file_menu.add_separator() 
file_menu.add_command(label="Exit", command=root.quit) 

edit_menu = Menu(my_menu, tearoff=False)
my_menu.add_cascade(label="Edit", menu=edit_menu)
edit_menu.add_command(label="Cut") 
edit_menu.add_command(label="Copy")
edit_menu.add_separator()
edit_menu.add_command(label="Undo")
edit_menu.add_command(label="Redo")

status_bar = Label(text="Ready", anchor=E)
status_bar.pack(fill=X, side=BOTTOM, ipady=5) 

root.mainloop() 

可能是因为您在asksaveasfilename()中使用了defaultextension=".*"。当您输入不带扩展名的文件名时,.* 将附加到文件名,因此文件名是无效文件名。

defaultextension=".*"更改为defaultextension=".txt",例如,如果不在文件对话框中输入文件扩展名,则要保存扩展名为.txt的文件。