2017-12-21 35 views
0
#!/usr /bin/python 
# -*- coding: utf-8 -*- 
import wx 
import os  

class RandomObj(object): 

    def __init__(self, name): 
     self.name = name 
class TreeExample(wx.Frame): 

    def __init__(self): 
     wx.Frame.__init__(self, None, title='Database', size=(200, 130)) 
     self.tree = wx.TreeCtrl(self, size=(200, 100)) 
     root = self.tree.AddRoot('Database') 
     self.tree.AppendItem(root, 'Class A') 
     files = [] 
     for (dirname, dirnames, filenames) in \ 
      os.walk('D:/Database/Class A'): 

      # print path to all subdirectories first. 

      for subdirname in dirnames: 
       files.append(os.path.join(dirname, subdirname)) 
       # print path to all filenames. 
       for filename in filenames: 
        self.item = files.append(os.path.join(dirname, 
          filename)) 
        self.tree.AppendItem(self.tree.GetLastChild(root), 
          filename) 
     self.sel = [] 
     for (i, j) in enumerate(files): 
      if j.endswith('.txt'): 
       self.sel.append(j) 
     print self.sel 
     self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnActivated, 
        self.tree) 
    def OnActivated(self, event): 
     value = event.GetItem() 
     f = open(value, 'r') 
     lines = f.readlines() 
     print lines[0] 
     print lines[1] 
     print 'Double clicked on', self.tree.GetItemText(value) 

'값'나는() treeitemid 열 수 있습니다 통과하기 위해 노력하고있어, 그것은 당신이 다시 나무 걸어해야한다고 생각 파일 경로wxpython을 사용하여 텍스트 파일의 줄을 읽는 트리 디렉토리에서 파일 경로를 얻는 방법 ..?

+0

'값 = self.tree.GetItemText (event.GetItem은())'거의 있었다 더 나은 응답을 기다립니다 할 수 있지만
이는 작동하는 것 같다! –

+0

@RolfofSaxony 오류가 발생했습니다. IOError : [Errno 2] 해당 파일이나 디렉토리가 없습니다. u'Gypsum.txt ' –

+0

동일한 디렉토리에서 프로그램을 실행 중이라고 가정합니다. –

답변

0

이 필요합니다. 당신이

#!/usr/bin/python 
# -*- coding: utf-8 -*- 
import wx 
import os 

class RandomObj(object): 

    def __init__(self, name): 
     self.name = name 

class TreeExample(wx.Frame): 

    def __init__(self): 
     wx.Frame.__init__(self, None, title='Database', size=(200, 130)) 
     self.tree = wx.TreeCtrl(self, size=(200, 100)) 
     root = self.tree.AddRoot('/home/public') 
     self.root = '/home/public' 
     self.tree.AppendItem(root, 'Music') 
     files = [] 
     for (dirname, dirnames, filenames) in \ 
      os.walk('/home/public/Music'): 

      # print path to all subdirectories first. 

      for subdirname in dirnames: 
       files.append(os.path.join(dirname, subdirname)) 
       # print path to all filenames. 
       for filename in filenames: 
        self.item = files.append(os.path.join(dirname, 
          filename)) 
        self.tree.AppendItem(self.tree.GetLastChild(root), 
          filename) 
     self.sel = [] 
     for (i, j) in enumerate(files): 
      if j.endswith('.txt'): 
       self.sel.append(j) 
     #print self.sel 
     self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnActivated, 
        self.tree) 

    def OnActivated(self, event): 
     value = self.tree.GetSelection() 
     fname = [] 
     while self.tree.GetItemParent(value): 
      fname.insert(0,"/"+self.tree.GetItemText(value)) 
      value = self.tree.GetItemParent(value) 
     fname.insert(0,self.root) 
     the_file = "".join(fname) 
     f = open(the_file, 'r') 
     lines = f.readlines() 
     print (lines[0]) 
     print (lines[1]) 
     print ('Double clicked on', str(the_file)) 
if __name__ == '__main__': 
    app = wx.App() 
    frame = TreeExample() 
    frame.Show() 
    app.MainLoop() 
+0

이것은 매우 잘 작동합니다 ... 전역 변수 및 할당 된 파일 []을 입력 한 다음 변수가 직접 함수에 전달됩니다. 고마워요 ... 작센의 @ 롤프 –