0

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

from Tkinter import Tk
from tkFileDialog import askopenfilename

Tk().withdraw()
filename = askopenfilename()

它打开一个文件浏览器,用户选择一个文件。但是用户可以在这个 GUI 窗口中浏览到其他目录。

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

这该怎么做?

4

2 回答 2

1

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

于 2013-07-25T21:26:52.403 回答
0

我认为你会被困在标准对话框的子类中,以使用 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
于 2013-07-25T21:38:16.583 回答