Here is another go at the tables.
I’ve created a cell object (see cell.py). This is just a rectangle that has some (optional) text associated with it.
A table is now not much more than just a collection of cells.
You just create the table and then add all the cells. For each cell you specify the row and column. Negative column numbers are allowed, which is handy for things like row labels.
See table_demo3.py for an example of how it works. The demo also includes some stuff to help with coming up with nice (?) pastel shades to use as colours.
I’ve also got an option that allows you to specify that a particular column should have its width worked out automagically based on the text in the cells in the column (again see the demo).
axes.py is almost the same as the last version i sent you, the only change is this little bug fix:
< (iterable(color) and len(color)==3 and len(x)!=3) or
axes.py (43.1 KB)
cell.py (2.63 KB)
table.py (7.2 KB)
table_demo3.py (2.82 KB)
(iterable(color) and len(color)==3 and len(left)!=3) or