2016-03-19 98 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

非常感謝您的詳細解釋。 –

相關問題