首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能使用Tkinter filedialog " filetype“的任何文件类型

不能使用Tkinter filedialog " filetype“的任何文件类型
EN

Stack Overflow用户
提问于 2018-11-26 16:47:15
回答 2查看 2.5K关注 0票数 0

所以,我有一段代码:

代码语言:javascript
复制
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”)。还有一些我在网上的例子中看到的,它总是在这些行上出现同样的错误:

代码语言:javascript
复制
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)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-27 11:35:05

来自费博特

文件型 列表 (标签,图案)元组序列相同的标签可能出现在几种模式中。使用“*”作为表示所有文件的模式。

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

所以改变一个元组

代码语言:javascript
复制
f = tk.filedialog.asksaveasfilename(filetypes=("All files", "*."))

的元组列表,如

代码语言:javascript
复制
f = tk.filedialog.asksaveasfilename(filetypes=[("All files", "*.*")])

或者让Json代替所有文件,比如

代码语言:javascript
复制
f = filedialog.asksaveasfilename(filetypes=[("Json", '*.json')])

或者添加所有文件作为第二个选项,Json是默认的

代码语言:javascript
复制
f = filedialog.asksaveasfilename(filetypes=[("Json", '*.json'), ("All files", "*.*")])
票数 3
EN

Stack Overflow用户

发布于 2018-11-26 16:59:34

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

代码语言:javascript
复制
f = tk.filedialog.asksaveasfilename(filetypes=("All files", "*."))

应该是

代码语言:javascript
复制
f = tk.filedialog.asksaveasfilename(filetypes=("json", "*.json"))

代码语言:javascript
复制
f = tk.filedialog.asksaveasfilename(filetypes=("All files", "*.*"))
# I'm not sure you can do this one with asksaveasfilename though

其中“所有文件”和"json“只是标签

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53485605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档