[pygtk] How do i set the text of a row in a TreeView to red?
Walter Anger
WalterAnger at aon.at
Sat Mar 6 23:20:31 WST 2004
On Sat, 6 Mar 2004 08:21:00 +0100
Walter Anger <WalterAnger at aon.at> wrote:
> On Sat, 06 Mar 2004 00:38:53 -0300
> Phillip <phillip at chile.com> wrote:
>
> have a look at the appended code. it is a "translation to python" of
> one of the examples in the treeview-tutorial of Tim-Philipp Müller.
>
> renderer.set_property("foreground","red")
>
> does the trick.
got the information, that the code only changes the textcolor of a whole
column. it is some months ago, that i made it. it was thoughtless,
sorry.
a supplement, a simple code, how one can achieve colorization for every
cell(row) is in the first attachment. (change 'background' to
'foreground' to colorize text instead of the cell)
the second attachment is a more complex one, using
gtk.TreeViewColumn.set_cell_data_func, again a trancoding from one of
the examples in the treeview-tutorial.
hth
walter
-------------- next part --------------
#!/usr/bin/env python
try:
import pygtk; pygtk.require("2.0")
except:
pass
import gtk
class ListExample:
def __init__(self):
window = gtk.Window(gtk.WINDOW_TOPLEVEL)
window.connect("delete_event", gtk.mainquit)
model = gtk.ListStore(str, str, str, str)
model.append(("Henrik","Ibsen","green","#23abff"))
model.append(("Samuel","Beckett","orange","OldLace"))
model.append(("Thomas","Mann","yellow","peach puff"))
treeview = gtk.TreeView(model)
window.add(treeview)
treeview.get_selection().set_mode(gtk.SELECTION_NONE)
renderer = gtk.CellRendererText()
treeview.append_column(gtk.TreeViewColumn("First Name", renderer, text=0, background=2))
treeview.append_column(gtk.TreeViewColumn("Last Name", renderer, text=1, background=3))
window.show_all()
def main():
gtk.main()
return 0
if __name__ == "__main__":
ListExample()
main()
-------------- next part --------------
#!/usr/bin/env python
try:
import pygtk; pygtk.require('2.0')
except:
pass
import gtk
import pango
COL_FIRST_NAME = 0
COL_LAST_NAME = 1
COL_YEAR_BORN = 2
class TreeStoreExample:
def createAndFillModel(self):
treestore = gtk.TreeStore(str, str, int)
toplevel = treestore.append(None)
treestore.set(toplevel,
COL_FIRST_NAME, "Maria",
COL_LAST_NAME, "Incognito")
toplevel = treestore.append(None)
treestore.set(toplevel,
COL_FIRST_NAME, "Jane",
COL_LAST_NAME, "Average",
COL_YEAR_BORN, 1962)
child = treestore.append(toplevel)
treestore.set(child,
COL_FIRST_NAME, "Janinita",
COL_LAST_NAME, "Average",
COL_YEAR_BORN, 1985)
return treestore
def ageCellDataFunc(self, column, renderer, model, iter, data):
year_now = 2003
year_born = model.get_value(iter, COL_YEAR_BORN)
if year_born and year_born <= year_now:
age = year_now - year_born
buf = "%u years old" % age
renderer.set_property("foreground-set", gtk.FALSE)
else:
buf = "age unknown"
renderer.set_property("foreground", "red")
renderer.set_property("text", buf)
def createViewAndModel(self):
view = gtk.TreeView()
# --- Column 1 ---
column = gtk.TreeViewColumn()
column.set_title("First Name")
view.append_column(column)
renderer = gtk.CellRendererText()
column.pack_start(renderer, gtk.TRUE)
column.add_attribute(renderer, "text", COL_FIRST_NAME)
# --- Column 2 ---
column = gtk.TreeViewColumn()
column.set_title("Last Name")
view.append_column(column)
renderer = gtk.CellRendererText()
column.pack_start(renderer, gtk.TRUE)
column.add_attribute(renderer, "text", COL_LAST_NAME)
renderer.set_property("weight", pango.WEIGHT_BOLD)
# --- Column 3 ---
column = gtk.TreeViewColumn()
column.set_title("age")
view.append_column(column)
renderer = gtk.CellRendererText()
column.pack_start(renderer, gtk.TRUE)
column.set_cell_data_func(renderer, self.ageCellDataFunc, None)
model = self.createAndFillModel()
view.set_model(model)
view.get_selection().set_mode(gtk.SELECTION_NONE)
return view
def __init__(self):
window = gtk.Window(gtk.WINDOW_TOPLEVEL)
window.connect("delete_event", gtk.mainquit)
view = self.createViewAndModel()
window.add(view)
window.show_all()
def main():
gtk.main()
return 0
if __name__ == "__main__":
TreeStoreExample()
main()
More information about the pygtk
mailing list