所以,我有一段代码:
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 file”、“All file”)。还有一些我在网上的例子中看到的,它总是在这些行上出现同样的错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\Tibers\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 1702, in __call__
return self.func(*args)
File "d:\Users\Tibers\Documents\GitHub\improved-broccoli\main.py", line 84, in savefileas
f = tk.filedialog.asksaveasfilename(filetypes=("All files", "*."))
File "C:\Users\Tibers\AppData\Local\Programs\Python\Python37-32\lib\tkinter\filedialog.py", line 380, in asksaveasfilename
return SaveAs(**options).show()
File "C:\Users\Tibers\AppData\Local\Programs\Python\Python37-32\lib\tkinter\commondialog.py", line 43, in show
s = w.tk.call(self.command, *w._options(self.options))
_tkinter.TclError: bad file type "*.", should be "typeName {extension ?extensions ...?} ?{macType ?macTypes ...?}?"为什么会这样呢?我该怎么做才能修好它?(最好将文件保存为.json)
发布于 2018-11-27 11:35:05
来自费博特
文件型 列表 (标签,图案)元组序列相同的标签可能出现在几种模式中。使用“*”作为表示所有文件的模式。
因此,filetypes应该是表单(label, pattern)的元组列表。现在,您只给它一个元组,而不是一个元组列表。您可以将其设置为一个元组的列表或多个元组的列表,第一个是默认选项。
所以改变一个元组
f = tk.filedialog.asksaveasfilename(filetypes=("All files", "*."))的元组列表,如
f = tk.filedialog.asksaveasfilename(filetypes=[("All files", "*.*")])或者让Json代替所有文件,比如
f = filedialog.asksaveasfilename(filetypes=[("Json", '*.json')])或者添加所有文件作为第二个选项,Json是默认的
f = filedialog.asksaveasfilename(filetypes=[("Json", '*.json'), ("All files", "*.*")])发布于 2018-11-26 16:59:34
正如我在评论中指出的,我很确定您的问题只是格式问题。
f = tk.filedialog.asksaveasfilename(filetypes=("All files", "*."))应该是
f = tk.filedialog.asksaveasfilename(filetypes=("json", "*.json"))或
f = tk.filedialog.asksaveasfilename(filetypes=("All files", "*.*"))
# I'm not sure you can do this one with asksaveasfilename though其中“所有文件”和"json“只是标签
https://stackoverflow.com/questions/53485605
复制相似问题