我不知道QTreeWidget想要怎樣的數據隨便,但這裏是一個(可能是壞的方式)來構建存儲器中的結構。
x = ('GCI/PyFiles/prova3.py', 'GCI/', \
'GCI/PyFiles/', 'GCI/Screenshots/', \
'GCI/prova2.py', 'prova.py')
structure = {}
for fn in x:
path = fn.split('/')
tmpd = structure
for p in path[:-1]:
try:
tmpd = tmpd[p]
except KeyError:
tmpd = tmpd[p] = {}
tmpd[path[-1]] = None
這會給你一本字典structure
,對於每個鍵或是其他的字典(代表一個文件夾)或None
表示,關鍵是一個文件。
更好的方式來做到這將創建一個類是這樣的:
class Node(object):
def __init__(self):
self.dirs = {}
self.files = []
或類似的東西,你可以填充。如果我從QT編程的日子裏沒有記錯的話,那麼QTreeWidget需要一個數據源,所以你基本上可以弄清楚這個源代碼是什麼樣的,並且適當地填充它。還有可能做到這一點的選項,
[sp for _,sp in sorted(
(len(splitpath),splitpath) for splitpath in
(path.split('/') for path in x)
)
]
這將返回您:
[['prova.py'], ['GCI', ''], ['GCI', 'prova2.py'],
['GCI', 'PyFiles', ''], ['GCI', 'PyFiles', 'prova3.py'],
['GCI', 'Screenshots', '']]
非常感謝您!你救了我! – rubik 2011-01-06 08:30:48