window 显示 python 中 folder/directory 的所有文件(.txt、.docs、.docx、.pdf)

A window which displays all the files(.txt, .docs, .docx, .pdf) of a folder/directory in python

如何制作一个window显示python中folder/directory的所有内容(.txt, .docs, .docx, .pdf)并且可以通过以下方式打开双击相同 window.

中的一个框架

这是一个获取给定目录中的文件名并将其显示为可供选择的按钮的简单示例。

此示例仅适用于仅包含文本文件的目录,但它应该提供一个很好的示例。

这里我使用 os 导入并使用来自 os 的方法 listdir()。这将允许我遍历给定目录中的所有文件名。在这种情况下,我的目录是与我的 .py 文件处于同一级别的文件夹。

我创建了一个名为 find_text_file 的方法,它将使用 Toplevel() 创建一个弹出窗口 window,然后为该目录中的每个文件名创建一个按钮。这些按钮将 运行 两个命令。一个命令销毁 Toplevel window,另一个命令将调用方法 update_textbox 将文本文件附加到根 window.

上的文本框

请记住,这仅适用于文本文件。您可能需要做一些额外的工作才能处理 json 文件,而对于其他格式则更是如此。 (大多数格式与 tkinter 不兼容)。

确保将 self.file_path 更改为文本文件的路径。

import tkinter as tk
import os

class MyApp(tk.Frame):

    def __init__(self, parent, *args, **kwargs):
        tk.Frame.__init__(self, parent, *args, **kwargs)
        self.root = parent
        self.text = tk.Text(self.root, width=50, height=20)
        self.text.pack()

        self.file_path = "./TextFiles"

        tk.Button(self.root, text="Open text file", command= self.find_text_file).pack()

    def find_text_file(self):                
        self.top = tk.Toplevel(self.root)
        for name in os.listdir(self.file_path):
            tk.Button(self.top, text=name, command = lambda n=name: [self.top.destroy(), self.update_textbox(n)]).pack()

    def update_textbox(self, name):
        with open("{}/{}".format(self.file_path, name), "r") as f:
            self.text.delete("1.0", "end")
            self.text.insert("1.0", f.read())


if __name__ == "__main__":
    root = tk.Tk() 
    app = MyApp(root)
    tk.mainloop()