import gtk
import sys

class A(object):
    def __init__(self, name):
        self.name = name



class Tree(object):
    def __init__(self):
        window = gtk.Window()
        self.model = gtk.ListStore(object)
        tree_view = gtk.TreeView(self.model)
        window.add(tree_view)
        window.show_all()

        renderer = gtk.CellRendererText()
        column = gtk.TreeViewColumn("Foo", renderer)
        column.set_cell_data_func(
            renderer, self.dict_cell_data_func, (0, 'name'))
        tree_view.append_column(column)
        self.fill_model()

    def dict_cell_data_func(self, column, cell, model, iter, (col_num, name)):
        obj = model.get_value(iter, col_num) 
        value = getattr(obj, name)
        cell.set_property("text", value)
        if value == 'venice':
            cell.set_property("cell-background", 'yellow')

    def fill_model(self):
        cities = 'rome venice florence'

        for city in cities.split():
            self.model.append(  [ A(city) ]  )


try:
    Tree()
    gtk.main()
except KeyboardInterrupt:
    sys.exit()

