2016-03-19 8 views
1

Ich benutze filedialog.askopenfilename(filetypes=[("All files", "*.*")]), aber aus irgendeinem Grund, wenn der Dialog öffnet, zeigt es keine Dateien ohne Suffix. Wenn beispielsweise eine Textdatei mit der Bezeichnung notes vorhanden ist, wird sie im Dialogfeld nicht angezeigt. Aber wenn ich es in notes.txt umbenenne, dann erscheint es in der Liste der Akten, obwohl beide notes und notes.txt beide Textdateien gerade mit einem Namensunterschied sind."tkinter.filedialog" erkennt keine Dateien ohne Suffix im Namen

Gibt es trotzdem, um das zu beheben? Es scheint wirklich unvernünftig zu sein, den Benutzer des Programms auszuschließen, das Suffix immer in den Namen aufzunehmen.

Antwort

0

Die offizielle Dokumentation ist es nicht erwähnen, aber wenn Sie die Dateien mit oder ohne Erweiterung erhalten wollen, müssen Sie ändern müssen:

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

An:

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

Beweis:

Hier

ist ein einfacher Code, um die obige Aussage zu demonstrieren:

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() 

Demo:

Hier ist ein Screenshot des obigen Programms:

enter image description here

+1

für die ausführliche Erklärung Ihnen sehr danken. –