DataTreeWidget uses TableWidget to represent arrays

This commit is contained in:
Luke Campagnola 2014-09-25 11:58:49 -04:00
parent a7b0bbb3bb
commit 8c0064a323
2 changed files with 13 additions and 23 deletions

View File

@ -19,7 +19,7 @@ d = {
'y': 2, 'y': 2,
'z': 'three' 'z': 'three'
}, },
'array1 (20x20)': np.ones((10,10)) 'array1 (40x10)': np.random.randint(10, size=(40,10))
} }
tree = pg.DataTreeWidget(data=d) tree = pg.DataTreeWidget(data=d)

View File

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from ..Qt import QtGui, QtCore from ..Qt import QtGui, QtCore
from ..pgcollections import OrderedDict from ..pgcollections import OrderedDict
from .TableWidget import TableWidget
import types, traceback import types, traceback
import numpy as np import numpy as np
@ -29,12 +30,8 @@ class DataTreeWidget(QtGui.QTreeWidget):
def setData(self, data, hideRoot=False): def setData(self, data, hideRoot=False):
"""data should be a dictionary.""" """data should be a dictionary."""
self.clear() self.clear()
self.tables = []
self.buildTree(data, self.invisibleRootItem(), hideRoot=hideRoot) self.buildTree(data, self.invisibleRootItem(), hideRoot=hideRoot)
#node = self.mkNode('', data)
#while node.childCount() > 0:
#c = node.child(0)
#node.removeChild(c)
#self.invisibleRootItem().addChild(c)
self.expandToDepth(3) self.expandToDepth(3)
self.resizeColumnToContents(0) self.resizeColumnToContents(0)
@ -62,22 +59,15 @@ class DataTreeWidget(QtGui.QTreeWidget):
elif isinstance(data, list) or isinstance(data, tuple): elif isinstance(data, list) or isinstance(data, tuple):
for i in range(len(data)): for i in range(len(data)):
self.buildTree(data[i], node, str(i)) self.buildTree(data[i], node, str(i))
elif isinstance(data, np.ndarray):
desc = "<%s shape=%s dtype=%s>" % (data.__class__.__name__, data.shape, data.dtype)
node.setText(2, desc)
subnode = QtGui.QTreeWidgetItem(["", "", ""])
node.addChild(subnode)
table = TableWidget()
table.setData(data)
table.setMaximumHeight(200)
self.setItemWidget(subnode, 2, table)
self.tables.append(table)
else: else:
node.setText(2, str(data)) node.setText(2, str(data))
#def mkNode(self, name, v):
#if type(v) is list and len(v) > 0 and isinstance(v[0], dict):
#inds = map(unicode, range(len(v)))
#v = OrderedDict(zip(inds, v))
#if isinstance(v, dict):
##print "\nadd tree", k, v
#node = QtGui.QTreeWidgetItem([name])
#for k in v:
#newNode = self.mkNode(k, v[k])
#node.addChild(newNode)
#else:
##print "\nadd value", k, str(v)
#node = QtGui.QTreeWidgetItem([unicode(name), unicode(v)])
#return node