如何让Windows记住使用tkinter filedialog的最后一个目录?

时间:2017-02-04 12:36:18

标签: python windows tkinter

代码如下:

from tkinter import filedialog

image_formats= [("JPEG", "*.jpg"), ("All files", "*.*")]

file=filedialog.askopenfilename(filetypes=image_formats)

我可以打开一个文件对话框,引导我转到.jpg文件。 在我的Windows 7开发框中,这会记住关闭并打开程序目录 - 很容易从目录中选择多个文件。

然而,在分发之后,使用cx_Freeze及其bdist_msi选项,同一程序到Windows 10机器的目录不再被记住。如何在Windows 10系统上获得Windows 7行为?我最好不要手动执行此操作,而是依赖底层的Windows机制。

PS Full bdist_msi实际程序的分发可在https://sites.google.com/site/klamerschutte/system/app/pages/admin/revisions?wuid=wuid:gx:403dfb9983518218

获得

4 个答案:

答案 0 :(得分:0)

如果我理解你的问题,你想知道如何在显示对话框时设置初始起始目录以选择文件(任何类型)。

您可以通过initialdir参数将其设置为askopenfilename,该参数将采用您想要的起始目录的路径。

例如,如果我一直希望对话框打开到用户的主文件夹,那么我可以使用os.path.expanduser('~')作为initialdir参数。

如果您希望它记住最后使用的目录,那么使用os.pardir获取从对话框中选择的文件的父目录,并将其存储在变量中。

答案 1 :(得分:0)

尝试下面的代码,它将记住该工具使用的最后一个目录

filename = askopenfilename(parent=root,title='Choose template file', filetypes =[('Excel Files', '*.xlsx')])

答案 2 :(得分:0)

我知道这是一个老问题,但最近我碰巧遇到了这个问题。我使用最新版本的Python 3.7进行了尝试。

我的解决方法:只是不要添加initialdir参数。在Windows 10上,它将在调用filedialog时从上次使用的目录开始。

答案 3 :(得分:-1)

如果要使askopenfilename记住上次使用的目录,请将initialdir设置为不存在的文件夹,例如initialdir = "/áéá"。 在Windows 10上适用于我。