“tkinter.filedialog”无法识别名称中没有后缀的文件

时间:2016-03-19 05:27:12

标签: python-3.x tkinter

我正在使用filedialog.askopenfilename(filetypes=[("All files", "*.*")]),但出于某种原因,当对话框打开时,它不显示任何没有后缀的文件。例如,如果存在名为notes的文本文件,则它不会显示在对话框中。但是,如果我将其重命名为notes.txt,则它会显示在文件列表中,即使notesnotes.txt都是只有名称差异的文本文件。

有没有解决这个问题?除了程序的用户总是在名称中包含后缀之外,这似乎是不合理的。

1 个答案:

答案 0 :(得分:0)

官方文档没有提及它,但是如果你想获得带或不带扩展名的文件,你需要更改:

askopenfilename(filetypes=[("All files", "*.*")])

要:

askopenfilename(filetypes=[("All files", "*")])

证明:

这是一个简单的代码来演示上述声明:

from Tkinter import *
import tkFileDialog

f_options = dict(filetypes=[('All files','*')])

class Begueradj(Tk):
    def __init__(self):
        Tk.__init__(self)
        self.title('Begueradj Test All Files')
        menu = self.menubar = Menu(self)
        fmenu = self.filemenu = Menu(menu, tearoff=0)
        menu.add_cascade(label='File', underline=0, menu=fmenu)
        fmenu.add_command(label="Open", underline=0,
                          accelerator='Ctrl+O',
                          command=self.fopendialog)
        self.config(menu=menu)
        self.bind_all('<Control-o>', self.fopendialog)

    def fopendialog(self, event=None):
        print repr(tkFileDialog.askopenfilename(parent=self,
                                                **f_options))

if __name__ == "__main__":
    test = Begueradj()
    test.mainloop()

演示:

以下是上述程序的屏幕截图:

enter image description here