QTreeWidget example
ツリー構造のリストを、割りと簡単に作るサンプル。
タプルのリストからツリーアイテムを作る。
タプル(k,v,n)の構造は、
- k:ノードの名前
- v:ノードの値
- n:子ノード(のリスト)
以下ソース。
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys, os, pprint, time from PyQt4.QtCore import * from PyQt4.QtGui import * def hoge(item,column): print item.data(column,Qt.UserRole).toString() def make_tree(lst): items = [] while len(lst): (k,v,n) = lst.pop(0) item = QTreeWidgetItem(QStringList(QString(str(k)))) item.setData(0,Qt.UserRole,v) items.append(item) if n is not None: items[-1].addChildren( make_tree(n) ) return items def main(): app = QApplication(sys.argv) app.setStyle( "Plastique" ) lst = [("0",0,None), ("1",1, [ ("1-0",10,None), ("1-1",11,None), ("1-2",12, [ ("1-2-0",120,None), ("1-2-1",121,None) ] ), ("1-3",13,None) ] ), ["2",2,None]] treeWidget = QTreeWidget() treeWidget.addTopLevelItems(make_tree(lst)) treeWidget.itemClicked.connect(hoge) treeWidget.header().hide() treeWidget.show() sys.exit(app.exec_()) if __name__ == "__main__": main()