tkinter:如何让用户在asksaveasfilename-dialog中选择文件类型?

时间:2015-07-05 09:32:07

标签: python tkinter

目前,我正在编程一个GUI,它应该允许用户保存文件并选择文件类型(比方说:jpg,bmp)。我正在使用Python 3.4的tkinter。

不幸的是,我无法弄清楚用户选择了哪种文件类型:我正在使用asksaveasfilename-dialog,我只能获得路径:

from tkinter import filedialog
path = filedialog.asksaveasfilename(filetypes = [('Bitmap', '.bmp'),('jpg', '.jpg')])

我可以尝试从路径中提取扩展名,但这可能会导致意外行为:

  1. 如果用户未在文件名中提供扩展名但选择文件类型,则“路径”不包含任何扩展名
  2. 如果用户首先决定使用文件名“example.bmp”,但之后选择jpg作为文件类型,则扩展名不是updatet(因为它通常在窗口中)。所以“路径”仍然是:C:\ ... \ example.bmp
  3. 有没有办法获取用户选择的文件类型? 还有其他方法吗?

1 个答案:

答案 0 :(得分:0)

当我遇到同样自动更新扩展程序的问题时,我偶然发现了你的问题。显然你可以尝试使用插件: 参见:

https://geonet.esri.com/blogs/thespatialextent

  

pythonaddins.SaveDialog = saveFileDialog

     

这个与OpenDialog几乎完全相同,除了不是过滤文件,我们能够自动将特定扩展附加到用户的输入。也可以传入一个文件类型描述和扩展的元组列表,然后填充“另存为文件类型”下拉列表,但同样唯一的做法是过滤显示的文件。它实际上是FileExtension参数,它将扩展名附加到返回值。

狡猾的死灵!