python - tkinter:如何让用户在 asksaveasfilename 对话框中选择文件类型?

标签 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 作为文件类型,则扩展名不是更新的(通常在窗口中)。所以“路径”仍然是:C:\...\example.bmp

有没有办法获取用户选择的文件类型? 还有其他办法吗?

最佳答案

当我遇到自动更新扩展的相同问题时,我偶然发现了你的问题。显然你可以试试 addins :

pythonaddins.SaveDialog = saveFileDialog

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

关于python - tkinter:如何让用户在 asksaveasfilename 对话框中选择文件类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31228956/

相关文章:

javascript - Python 和 JavaScript 之间的 JSON 日期时间

python - 使用python更新标签中的图像

python - 如何在 tkinter 中设置小部件的大小?

python - 在python中显示2D数独板

python - 将一个类标记为已弃用,以便在 PyCharm 中标记继承类

python - Tkinter - 如何删除 ComboBox 小部件中的粗体文本和焦点?

python - 执行时 tkinter 窗口为空白

python - 首先是 Tkinter 还是 PyQt?

python - Celery - 如何通过任务 id 获取任务名称?

python - 为 2D NumPy 数组的每一行高效应用不同的排列