2016-03-19 66 views
1

我使用的是filedialog.askopenfilename(filetypes=[("All files", "*.*")]),但由于某些原因,当对话框打开时,它不显示任何没有后缀的文件。例如,如果有一个名为notes的文本文件,它将不会显示在对话框中。但是,如果将其重命名为notes.txt,则它会显示在文件列表中,即使notesnotes.txt都是仅具有名称差异的文本文件。“tkinter.filedialog”无法识别名称中没有后缀的文件

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

回答

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

+1

非常感谢您的详细解释。 –

相关问题