3

我目前正在使用 Tkinter 在 python 中编写一个 GUI,用户可以使用扩展名“.espace”将 GUI 的状态保存在他们的目录中。

filename = tkFileDialog.asksaveasfilename(defaultextension=".espace")

如果用户指定了不同的文件扩展名,则文件将使用他们指定的扩展名保存。有没有办法防止这种情况发生?这样他们就完全只能保存扩展名为“.espace”的文件了吗?

4

3 回答 3

10

您可以使用 '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)
于 2013-08-04T08:41:34.297 回答
2

为了使@IsraelJ 的解决方案适用于不同的扩展名并抵抗大写/小写字母,我建议:

fileext = ".space"
filename = filename if filename[-len(fileext):].lower() == fileext else filename + fileext
于 2021-01-31T13:30:59.243 回答
2

嗨,我知道我迟到了 7 年,但你可以强制你的扩展我在对话框之后执行一个简单的 if 命令,只需添加这个简单的行:

filename = filename if ".space" in filename else filename + ".space"

基本上检查是否使用了默认扩展名,如果没有,它将添加到末尾。如果用户键入另一个扩展名,它将失效。

于 2020-05-04T08:14:19.510 回答