[pygtk] Set a specific row of a treestore/treeview to another color

Alec Hussey alec.hussey at madsoft.org
Sun Jan 20 13:06:19 WST 2008


Hello all,

I'm writing an application where I need to set a row of a  
treestore/treeview to either red or green based upon whether the server is  
up or not. I've looked all around and haven't been able to figure out how  
exactly to accomplish this. It's easy to give columns their own color, but  
I can't figure out how to give rows their own specific color. Here is the  
code I have so far:

import gtk, gobject

class ServerList(gtk.ScrolledWindow):
	def __init__(self):
		gtk.ScrolledWindow.__init__(self)
		
		# Create tree store and fill with data
		self.treestore = gtk.TreeStore(gobject.TYPE_STRING, gobject.TYPE_STRING,
		                               gobject.TYPE_STRING, gobject.TYPE_STRING)
		for item in range(16):
			status = ("On" if item % 2 == 0 else "Off")
			self.treestore.append(None, ("Server %d" % item, "127.0.0.1:27015",  
status, "Open"))
		
		# Create tree view columns
		self.name_renderer = gtk.CellRendererText()
		self.name_renderer.set_property("cell-background", "red")
		self.name_column = gtk.TreeViewColumn("Name", self.name_renderer, text=0)
		
		self.serverip_renderer = gtk.CellRendererText()
		self.serverip_column = gtk.TreeViewColumn("Server IP:Port",  
self.serverip_renderer, text=1)
		
		self.status_renderer = gtk.CellRendererText()
		self.status_column = gtk.TreeViewColumn("Status", self.status_renderer,  
text=2)
		
		self.ftp_renderer = gtk.CellRendererText()
		self.ftp_column = gtk.TreeViewColumn("FTP", self.ftp_renderer, text=3)
		
		# Create the actual tree view
		self.treeview = gtk.TreeView(self.treestore)
		self.treeview.append_column(self.name_column)
		self.treeview.append_column(self.serverip_column)
		self.treeview.append_column(self.status_column)
		self.treeview.append_column(self.ftp_column)
		self.treeview.set_search_column(0)
		self.treeview.set_reorderable(False)
		#self.treeview.get_selection().connect("changed",  
callbacks.serverlist_row_activated)
		self.treeview.show()
		
		# Setup the scrolled window
		self.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS)
		self.add_with_viewport(self.treeview)

-- 
Thanks a lot in advance!
Alec Hussey


More information about the pygtk mailing list