filedialog打开文件夹中的文件(tkinter)

时间:2017-07-27 16:27:57

标签: python user-interface tkinter filedialog

我对此帖子中的代码有疑问 filedialog, tkinter and opening files

我想将它实现到我自己的代码中但是当我运行它时(没有我的代码,只有你看到的代码)所有显示的文件夹都是空的,我实际上无法打开任何内容。

from tkinter import *
from tkinter.filedialog import askopenfilename
from tkinter.messagebox import showerror

class MyFrame(Frame):
    def __init__(self):
        Frame.__init__(self)
        self.master.title("Example")
        self.master.rowconfigure(5, weight=1)
        self.master.columnconfigure(5, weight=1)
        self.grid(sticky=W+E+N+S)

        self.button = Button(self, text="Browse", command=self.load_file, width=10)
        self.button.grid(row=1, column=0, sticky=W)

    def load_file(self):
        fname = askopenfilename(filetypes=(("Template files", "*.tplate"),
                                           ("HTML files", "*.html;*.htm"),
                                           ("Python file", "*.py"),
                                           ("All files", "*.*") ))
        if fname:
            try:
                print("""here it comes: self.settings["template"].set(fname)""")
            except:                     # <- naked except is a bad idea
                showerror("Open Source File", "Failed to read file\n'%s'" % fname)
            return


if __name__ == "__main__":
    MyFrame().mainloop()

1 个答案:

答案 0 :(得分:1)

您的代码运行良好,我假设您想要了解的是文件类型在示例中的使用方式。

使用提供的类型列表(实际上是一个元组),浏览对话框优先查找扩展名为.tplate的文件。 然后,您可以在下拉列表框中更改此选项以选择html,python或任何类型的文件。

fname = askopenfilename(filetypes=(("Template files", "*.tplate"),
                                   ("HTML files", "*.html;*.htm"),
                                   ("Python file", "*.py"),
                                   ("All files", "*.*") ))

如果更改提供的元组的顺序,则可以先选择其他类型,

fname = askopenfilename(filetypes=(("Python file", "*.py"),
                                   ("HTML files", "*.html;*.htm"),
                                   ("All files", "*.*") ))

检查此doc以获取有关选项的更多详细信息。