使用tkinter选择多个目录

时间:2016-08-31 08:32:16

标签: python tkinter

我必须对几个目录执行操作。

TKinter提供了一个用于打开一个文件(askopenfilename)和几个文件(askopenfilenames)的对话框,但缺少多个目录的对话框。

为#34; askdirectories"提供可行解决方案的最快方法是什么?

3 个答案:

答案 0 :(得分:1)

在纯tkinter中执行此操作的唯一方法(手动构建目录选择器小部件除外)是在单独的对话框中为每个目录请求用户。您可以保存以前使用的位置,因此用户无需每次都使用以下代码进行导航:

from tkinter import filedialog
dirselect = filedialog.Directory()
dirs = []
while True:
    d = dirselect.show()
    if not d: break
    dirs.append(d)

另一种解决方案是使用tkinter.tix扩展名(现在是标准库的一部分,但可能需要在某些平台上安装Tk的Tix)。首先,您需要tkinter.tix.DirList小部件。它看起来如下(有点老img):

img

有关详情,请参阅tkinter.tixTk Tix文档

答案 1 :(得分:0)

您应该可以使用tkFileDialog.askdirectory。查看文档here:)

修改

也许是这样的?

from Tkinter import *
import tkFileDialog

root = Tk()
root.geometry('200x200')
root.grid_rowconfigure(0, weight = 1)
root.grid_columnconfigure(0, weight = 1)

dirs = []
def get_directories():
    dirs.append(tkFileDialog.askdirectory())
    return dirs

b1 = Button(root, text='select directories...', command = get_directories)
b1.pack()


root.mainloop()

有什么想法吗?

答案 2 :(得分:0)

不幸的是,tkinter本身不支持此功能。 tkfilebrowser是一个不错的选择。基于Luke使用tkfilebrowser的答案的代码如下:

import tkfilebrowser
from tkinter import *

root = Tk()
root.geometry('200x200')
root.grid_rowconfigure(0, weight=1)
root.grid_columnconfigure(0, weight=1)

dirs = []

def get_directories():
    dirs.append(tkfilebrowser.askopendirnames())
    return dirs

b1 = Button(root, text='select directories...', command=get_directories)
b1.pack()

root.mainloop()