On Sat, 6 Mar 2004 08:21:00 +0100
Walter Anger <[EMAIL PROTECTED]> wrote:

> On Sat, 06 Mar 2004 00:38:53 -0300
> Phillip <[EMAIL PROTECTED]> 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

#!/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()

#!/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()
                      

_______________________________________________
pygtk mailing list   [EMAIL PROTECTED]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/

Reply via email to