Python 使用os.walk和gobject gtk+3创建树层次结构
我正在尝试创建一个简单的文件浏览器。我正在尝试为文件添加树层次结构。我编写了一个正确打印层次结构的示例方法,但我很难对相同的概念进行建模以创建Gtk.TreeStore对象。以下是列出文件的示例代码:Python 使用os.walk和gobject gtk+3创建树层次结构,python,gtk,python-3.2,pygobject,Python,Gtk,Python 3.2,Pygobject,我正在尝试创建一个简单的文件浏览器。我正在尝试为文件添加树层次结构。我编写了一个正确打印层次结构的示例方法,但我很难对相同的概念进行建模以创建Gtk.TreeStore对象。以下是列出文件的示例代码: def list_files(startpath): for dirname, subdirs, files in os.walk(startpath): level = dirname.replace(startpath, '').count(os.sep)
def list_files(startpath):
for dirname, subdirs, files in os.walk(startpath):
level = dirname.replace(startpath, '').count(os.sep)
indent = ' ' * 4 * (level)
print('{}{}/'.format(indent, os.path.basename(dirname)))
subindent = ' ' * 4 * (level + 1)
for f in files:
print('{}{}'.format(subindent, f))
下面是创建Gtk.TreeStore的代码:
MyTreeStore类别:
在附加文件名时,我只是停留在创建适当的迭代器上。现在,上面的代码只是嵌套所有目录,因为父目录是附加到存储的最后一个目录。你知道我该怎么做吗
def add_paned(self):
paned = Gtk.Paned.new(Gtk.Orientation.HORIZONTAL)
TEST_DIR = '/home/myuser'
store = MyTreeStore(str)
store.generate_tree(TEST_DIR)
treeview = Gtk.TreeView(store)
renderer = Gtk.CellRendererText()
column = Gtk.TreeViewColumn("FileName", renderer, text=0)
treeview.append_column(column)
paned.add1(treeview)
self.add(paned)
return paned
from gi.repository import Gtk
import os
class MyTreeStore(Gtk.TreeStore):
def __init__(self, *arg):
super(MyTreeStore, self).__init__(*arg)
def generate_tree(self, path):
parent = None;
for dirname, subdirs, files in sorted(os.walk(path)):
# level = dirname.replace(path, '').count(os.sep)
# iter = self.get_iter_from_string('{}'.format(level))
parent = self.append(parent, [os.path.basename(dirname)])
print(os.path.basename(dirname))
for file in sorted(files):
self.append(parent, [file])