我目前正在使用 Tkinter 在 python 中编写一个 GUI,用户可以使用扩展名“.espace”将 GUI 的状态保存在他们的目录中。
filename = tkFileDialog.asksaveasfilename(defaultextension=".espace")
如果用户指定了不同的文件扩展名,则文件将使用他们指定的扩展名保存。有没有办法防止这种情况发生?这样他们就完全只能保存扩展名为“.espace”的文件了吗?
我目前正在使用 Tkinter 在 python 中编写一个 GUI,用户可以使用扩展名“.espace”将 GUI 的状态保存在他们的目录中。
filename = tkFileDialog.asksaveasfilename(defaultextension=".espace")
如果用户指定了不同的文件扩展名,则文件将使用他们指定的扩展名保存。有没有办法防止这种情况发生?这样他们就完全只能保存扩展名为“.espace”的文件了吗?
您可以使用 'filetypes' 选项指定文件类型。下面的示例将保存对话框上的文件类型下拉菜单更改为 .espace 和所有文件。
filename = tkFileDialog.asksaveasfilename(defaultextension=".espace", filetypes=(("espace file", "*.espace"),("All Files", "*.*") ))
我还没有找到使用 asksaveasfilename 来限制使用其他文件扩展名的选项。我认为您可以编写一个循环来强制用户使用该扩展:
import os
import sys
ext = ""
while ext != ".escape":
filename = tkFileDialog.asksaveasfilename(defaultextension=".espace", filetypes=(("espace file", "*.espace"),("All Files", "*.*") ))
file,ext = os.path.splitext(filename)
为了使@IsraelJ 的解决方案适用于不同的扩展名并抵抗大写/小写字母,我建议:
fileext = ".space"
filename = filename if filename[-len(fileext):].lower() == fileext else filename + fileext
嗨,我知道我迟到了 7 年,但你可以强制你的扩展我在对话框之后执行一个简单的 if 命令,只需添加这个简单的行:
filename = filename if ".space" in filename else filename + ".space"
基本上检查是否使用了默认扩展名,如果没有,它将添加到末尾。如果用户键入另一个扩展名,它将失效。