2017-07-27 8 views
0

私は filedialog, tkinter and opening filesのFileDialogは、フォルダ内のファイルを開くには(Tkinterの)

は、私は自分のコードにこれを実装したい、このポストからのコードについて質問がありますが、私は、この(私のコードなしで、単にコードを実行するとあなたが参照してください)表示されるすべてのフォルダが空であり、私は実際に何かを開くことはできません。

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

開いているダイアログで 'すべてのファイル 'を選択しましたか? 'filetypes'リストの先頭に置いてデフォルトにします。 – zwer

+0

ありがとうございました!最初に 'All Files'を置くことで問題は解決されました。 @zwer –

答えて

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

関連する問題