保存后未将扩展名添加到文件名

Extension not added to file name after saving

虽然我在程序中通过 filetypes 选项 为它们提供了扩展名,但我在保存文件后得到了没有扩展名的文件。我只能使用 defaultextension 选项 来做到这一点,但我想让用户决定选择一个扩展而不会弄乱代码。另外,当我使用 defaultextension 选项 时,例如:defaultextension=".txt",它会在我的文件名中添加 2 .txt,例如 filename.txt.txt .这是我的片段:

from tkinter import *
import tkinter.filedialog

root = Tk()
root.title("Saving a File")
root.geometry("500x500-500+50")

def save():
    filename = filedialog.asksaveasfilename(
        initialdir="D:",
        title="Choose your file",
        filetypes=(
            ("Text Files", "*.txt"),
            ("Python Files", "*.py"),
            ("All Files", "*.*")
            )
        )

    try:
        fileobj = open(filename, 'w')
        fileobj.write(text.get(0.0, "end-1c"))
        fileobj.close()
    except:
        pass

button = Button(root, text="Save", command=save,
                     cursor='hand2', width=30, height=5,
                     bg='black', fg='yellow', font='Helvetica')
button.pack()

text = Text(root)
text.pack()

没有写入文件有任何问题,我的问题仅在于它们的扩展

额外信息:

idlelib.IOBinding(3.6 中的 .iomenu)具有此代码,可在未明确输入时添加 .py 或 .txt。我不知道 know/remember "TEXT" 是干什么用的,但既然代码有效,我就不用管它了。

    filetypes = [
        ("Python files", "*.py *.pyw", "TEXT"),
        ("Text files", "*.txt", "TEXT"),
        ("All files", "*"),
        ]
    [...]
    def asksavefile(self):
        dir, base = self.defaultfilename("save")
        if not self.savedialog:
            self.savedialog = tkFileDialog.SaveAs(
                    parent=self.text,
                    filetypes=self.filetypes,
                    defaultextension=self.defaultextension)
        filename = self.savedialog.show(initialdir=dir, initialfile=base)
        return filename

太棒了!我自己只是通过添加 defaultextension="*.*" 选项 找到了答案。感谢大家尝试回答我的问题,尽管他们 none 解决了我的问题, 事实上 ,他们中的大多数只是否决了我的问题 而没有 解释他们的理由。好吧,如果您不知道解决方案,那不是我的错 LOL!感谢其他试图帮助我的人! 感谢!:)