如何从树目录中获取文件路径以使用 wxpython.. 读取文本文件行?

达南杰·纳拉瓦德
#!/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)

我试图传递给 open() 的“值”是 treeitemid,它需要文件路径

萨克森州的罗尔夫

我认为你必须走回树上。
这似乎有效,尽管您可能想等待更好的答案

#!/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()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章