Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何让Windows记住使用tkinter filedialog使用的最后一个目录?_Python_Windows_Tkinter - Fatal编程技术网

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

Python 如何让Windows记住使用tkinter filedialog使用的最后一个目录?,python,windows,tkinter,Python,Windows,Tkinter,代码如下: from tkinter import filedialog image_formats= [("JPEG", "*.jpg"), ("All files", "*.*")] file=filedialog.askopenfilename(filetypes=image_formats) 我可以打开一个文件对话框,它会引导我找到一个.jpg文件。 在我的Windows 7开发框中,这会记住关闭和打开程序目录-很容易从目录中选择多个文件 但是,在分发后,使用cx_Freeze及其

代码如下:

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实际程序的完整bdist_msi分发版可在

上获得。如果我正确理解您的问题,您想知道在显示选择任何类型文件的对话框时如何设置初始启动目录

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

例如,如果我总是希望对话框打开到用户的主文件夹,那么我可以使用os.path.expanduser“~”作为initialdir参数


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

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

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

如果您想让askopenfilename记住上次使用的目录,请将initialdir设置为不存在的文件夹,例如initialdir=/aa。
这在Windows 10上适用。

我知道这是一个老问题,但我最近碰巧遇到了这个问题。我在最新版本的Python3.7中尝试了这一点


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

在Windows 7计算机上,类似于从所选文件获取和存储父目录的操作会自动进行。如果你愿意的话,我希望在Windows10机器上也有这样的行为。实施它。事情不会自动神奇地发生。它们是编程的。由您或其他人执行。它发生在我的Windows 7系统上。我没有对它进行编程,所以其他人也这么做了——我希望是WIndows。在Windows 10下如何获得这种行为?