Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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:如何使用GUI选择文件,但防止浏览其他目录?_Python_File_User Interface_Browser - Fatal编程技术网

Python:如何使用GUI选择文件,但防止浏览其他目录?

Python:如何使用GUI选择文件,但防止浏览其他目录?,python,file,user-interface,browser,Python,File,User Interface,Browser,我想让用户从特定目录中删除文件。因此,我使用: from Tkinter import Tk from tkFileDialog import askopenfilename Tk().withdraw() filename = askopenfilename() 它打开一个文件浏览器,用户选择一个文件。但用户可以在此GUI窗口中浏览到其他目录 我想阻止用户浏览到其他目录,这样他/她就不能从其他文件夹中删除文件。应该只允许用户从该起始目录中选择文件 如何做到这一点?我认为标准文件对话框不可能

我想让用户从特定目录中删除文件。因此,我使用:

from Tkinter import Tk
from tkFileDialog import askopenfilename

Tk().withdraw()
filename = askopenfilename()
它打开一个文件浏览器,用户选择一个文件。但用户可以在此GUI窗口中浏览到其他目录

我想阻止用户浏览到其他目录,这样他/她就不能从其他文件夹中删除文件。应该只允许用户从该起始目录中选择文件


如何做到这一点?

我认为标准文件对话框不可能做到这一点。但是你可以自己写。只需使用treeview小部件显示目录中的所有文件(和相关信息)。用户可以多选文件,您可以在用户取消对话框后删除它们。

我认为您将无法通过将标准对话框子类化来实现UI方式。但是,对于快速和脏的,应该可以在循环中使用askopenfilename()。大致如下:

while True:
    filename = askopenfilename()
    if not filename:
        raise FileDeleteAbortError()
    if os.path.dirname(filename) == expected_directory:
        break
    tkMessageBox.showwarning() # pick another file, this one's in the wrong directory

在Linux下,您可以查看
os.chroot