我必须对几个目录执行操作。
TKinter提供了一个用于打开一个文件(askopenfilename)和几个文件(askopenfilenames)的对话框,但缺少多个目录的对话框。
为#34; askdirectories"提供可行解决方案的最快方法是什么?
答案 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):
有关详情,请参阅tkinter.tix和Tk 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()