我已经为你写了一个例子。如您所见,我的代码在所选文件夹中分别显示了文件和目录(如果不需要,您可以删除目录部分)。
代码:
from tkinter import *
from tkinter import filedialog
from os import listdir
from os.path import isfile, isdir, join
root = Tk()
root.geometry("200x200")
root.grid_rowconfigure(0, weight=1)
root.grid_columnconfigure(0, weight=1)
def get_directories():
selected_directory = filedialog.askdirectory()
print("Selected directory: {}".format(selected_directory))
content_of_selected_folder = listdir(selected_directory)
print(content_of_selected_folder)
for elem in content_of_selected_folder:
if isfile(join(selected_directory, elem)):
Label(root, text="File: {}".format(elem)).pack()
if isdir(join(selected_directory, elem)):
Label(root, text="Directory: {}".format(elem)).pack()
b1 = Button(root, text="select directories...", command=get_directories)
b1.pack()
root.mainloop()
测试输出:
>>> python3 test.py
Selected directory: /home/user/work_dir/tools/venv3
['include', 'lib', 'lib64', 'bin', 'pyvenv.cfg', 'pip-selfcheck.json']
界面:
如果要显示元素的完整路径:
for elem in content_of_selected_folder:
full_path_of_element = join(selected_directory, elem)
if isfile(full_path_of_element):
Label(root, text="File: {}".format(full_path_of_element)).pack()
if isdir(full_path_of_element):
Label(root, text="Directory: {}".format(full_path_of_element)).pack()
完整路径的 GUI:
注意:
根据您的问题标题(我不知道这是错误还是正确),您想显示多个目录的内容。如果你真的想这样做,那么你可以检查上面的 sn-p。如果您多次单击select directories... 按钮并选择一个文件夹,则内容列表将扩展为新选择的文件夹的内容。
相关代码部分:
content_of_all_selected_dirs = []
def get_directories():
selected_directory = filedialog.askdirectory()
print("Selected directory: {}".format(selected_directory))
content_of_all_selected_dirs.extend(listdir(selected_directory))
print(content_of_all_selected_dirs)
for elem in content_of_all_selected_dirs:
full_path_of_element = join(selected_directory, elem)
if isfile(full_path_of_element):
Label(root, text="File: {}".format(full_path_of_element)).pack()
if isdir(full_path_of_element):
Label(root, text="Directory: {}".format(full_path_of_element)).pack()
选中/tmp/202108/20210817204008目录后的GUI:
选中/tmp/202109/20210909192402/resources目录后的GUI: