FAQ Index - Search - Recent Changes - Everything - Add entry

<< Previous Entry | FAQ Entry 13.58 | Next Entry >>

13.58. How do I hide the row expanders (or How do I share a model between tree and table view)?

As there are two types of model - TreeStore and ListStore and only one type of view - TreeView, it is not obvious how to share a model between two views.

The trick is to use one model and one view but to control the visibility of row expanders. All we have to do is to add a first dummy column (with no model column equivalent), keep it hidden all the time and switch the 'expander-column' property between this and next column (having 'expander-column' set to column that is not visible effectively hides the expanders).

Please note the user has no way how to expand/collapse the rows when the expanders are hidden - it is useful to expand all rows prior to hiding the expanders.

hide the dummy column:

  treeview.get_column(0).set_property('visible', False)
hide the expanders:
  treeview.expand_all()
  treeview.set_property('expander-column', self.treeview.get_column(0))
show the expanders:
  treeview.set_property('expander-column', self.treeview.get_column(1))
See also en.wikibooks.org/wiki/GTK+_By_Example/Tree_View/Miscellaneous

PyGTK FAQ Wizard | PyGTK Homepage | Feedback to faq at pygtk.org