2016-05-01 8 views
0

iは、ファイルエクスプローラを作成したいが、ID = tree.insert()ツリーTK(ファイルエクスプローラ)

def SUBS(path): 
    PO = "" 
    parent = tree.parent(XOM) 
    while os.path.exists(path+"/"+PO): 
      X1 = 0 
      List = os.listdir(path+"/"+PO) 
      for element in List: 
       X1 += 1 
       if os.path.isfile(path+"/"+element): 
       tree.insert(XOM,str(X1),text=element) 
       if os.path.isdir(path+"/"+element): 
       id = tree.insert(XOM,str(X1),text=element) 
       PO = element 
      break 
X = 0 
Path = "/" 
WinT = Tk() 
tree = ttk.Treeview(WinT ,height=15) 
tree.pack(expand=YES,fill=BOTH) 
tree.heading("#0" ,text="Directory") 

PATH = os.listdir(Path) 
for element in PATH: 
    X += 1 
    PaTh = Path+"/"+element 
    if "//" in PaTh: 
     PATH = PaTh.replace('//','/') 
    if "//" not in PaTh: 
     PATH = PaTh 
    if "." in element : 
     tree.insert('',str(X),text=element) 
    if "." not in element: 
     XOM = tree.insert('',str(X),text=element) 
     SUBS(PATH) 

ので、問題が関数SUBSであるといくつかの問題()問題Sをm個実際には私がid =を使用しているという事実から来ています。それはSUBS()関数でのみ使用するべきです。そうでなければidは既に存在しています。 )しかし、私はできません..

+0

正確には機能しないのは何ですか?期待している結果は何ですか? – VRage

+0

よく、私はlistdirとなるような機能を望み、それがdirのようなものならば各行に結果を追加します:if os.path.isdir()私はすべてのサブファイル/だから私は自分のコードを変更しましたが、私はいくつかの問題を抱えていました:while os.path.exists() – Raskaya

+0

私はid =を使うことができるので、私の問題はすべてのサブファイル/最初の行( "/"> var) – Raskaya

答えて

0

あなたは何をしたいですか?再帰関数は、それ自体を呼び出す関数です。

def SUBS(path, parent):  
    for p in os.listdir(path): 
     abspath = os.path.join(path, p) 
     parent_element = tree.insert(parent, 'end', text=p, open=True) 
     if os.path.isdir(abspath): 
      SUBS(abspath, parent_element) 


path = "C:/" 
WinT = Tk() 
tree = ttk.Treeview(WinT ,height=15) 
tree.pack(expand=YES,fill=BOTH) 
tree.heading("#0" ,text="Directory") 
root = tree.insert('', 'end', text=path, open=True) 
SUBS(path, root) 
WinT.mainloop() 

ディレクトリ内のすべての要素を取得し、ツリーウィジェットに追加します。関数以外のディレクトリが自分自身を呼び出す場合は、ディレクトリがなくなるまでそのディレクトリを呼び出します。

+0

たくさん働いています:)すべてのディレクトリを閉じるにはどうすればいいですか? – Raskaya

+0

うれしいことに、この答えに間違いがないと覚えておいてください。閉じたツリー要素を変更するには、 'tree.insert()'メソッドの 'open = True'オプションを' open = False'に変更します。 – VRage

関連する問題