不能使用我尝试与Tkinter filedialog“filetype”一起使用的任何文件类型

2024-04-27 13:15:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一段代码:

def savefileas(self):
       filename = "hello.json" #Do interface
       f = tk.filedialog.asksaveasfilename(filetypes=("All files", "*."))
       if f is None: # asksaveasfile return `None` if dialog closed with "cancel".
           return
       f.close()

但是,每次我尝试运行它时,无论我在“filetype”上添加了什么(我尝试过“json”、“.json”、“All files”、“”以及其他一些我在网络示例中看到的内容),它都会在这些行返回相同的错误:

^{pr2}$

为什么?我需要做些什么来修复它?(最好将文件另存为.json)


Tags: 代码selfnonejsonhelloreturnifdef
2条回答

正如我在评论中指出的,我很确定你的问题只是格式问题。在

f = tk.filedialog.asksaveasfilename(filetypes=("All files", "*."))

应该是

^{pr2}$

或者

f = tk.filedialog.asksaveasfilename(filetypes=("All files", "*.*"))
# I'm not sure you can do this one with asksaveasfilename though

其中“All files”和“json”只是标签

来自effbot

filetypes

list

Sequence of (label, pattern) tuples. The same label may occur with several patterns. Use “*” as the pattern to indicate all files.

因此filetypes应该是(label, pattern)形式的元组列表。现在你只给它一个元组,而不是一个元组列表。您可以将其设置为一个元组的列表或多个元组的列表,其中第一个元组是默认选项。在

所以改变一元组

f = tk.filedialog.asksaveasfilename(filetypes=("All files", "*."))

像这样的元组列表

^{pr2}$

或者使用Json而不是像

f = filedialog.asksaveasfilename(filetypes=[("Json", '*.json')])

或者添加所有文件作为第二个选项,Json作为默认选项,如下所示

f = filedialog.asksaveasfilename(filetypes=[("Json", '*.json'), ("All files", "*.*")])

相关问题 更多 >