代码如下:
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
获得答案 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上适用于我。