I would make a custom cellrenderer that, given the column data, and for render_vfunc() simply decides what type of row it is going to be and returns whatever render() returns from an internal cellrenderer that does the right thing for the row.I have an example for subclassing CellRenderer here [1]. Just take what it does and instead of adding the two cellrenderers together, just choose one based on the property.