Hello everyone,
Sorry for all the questions recently (I will get to filing earlier bug I
mentioned about tooltips to bugzilla
later tonight).
I needed to display something like a table in Excel: Cells with text in them,
separated by black lines.
I couldn't find an easy way to do it from my searching, so I ended up creating
a LabelGridWidget. This
is an EventBox that contains a Table. I set it's background color to be the
color of the gridlines, then I
add a ColorBin in each slot in the Table, with xoptions and yoptions to EXPAND
and FILL. A ColorBin is
another EventBox that contains a Label and changes its color.
I then set the background color of the ColorBin to the normal bg color
(self.style.bg[gtk.STATE_NORMAL]).
The effect is pretty much a grid, but it seems wasteful to use 26 eventboxes
and 25 labels for a 5x5 table.
Is there a better way to go about doing this? I've tried using a TreeView. and
have the following code
so far:
class LabelGridWidget(gtk.EventBox):
def __init__(self, rows, cols, homogeneous=False,
gridcolor=gtk.gdk.Color(0, 0, 0)):
gtk.EventBox.__init__(self)
self.ls = gtk.ListStore(*([gtk.Label]*cols))
for r in xrange(rows):
self.ls.append([gtk.Label("hello")] * cols)
self.tv = gtk.TreeView(self.ls)
#self.tv.set_grid_lines(True)
self.tv.expand_all()
self.add(self.tv)
def settext(self, text, row, col):
self.ls[row][col] = gtk.Label(text)
def gettext(self, row, col):
return self.ls[row][col].get_text()
Both with using gobject.TYPE_STRING for the columns, and with label, but I
could not get it to actually display.
Thanks in advance,
- Claudiu
_______________________________________________
pygtk mailing list [email protected]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/