[pygtk] Treeview/model: Problems with Expanding and Selecting Rows
darethehair at gmail.com
Wed Jan 28 00:16:47 WST 2009
John Finlay wrote:
> darethehair wrote:
>> Hello Folks!
>> The PyGTK tutorial example named 'basictreeview.py' works fine for me.
>> When I click on the 'expander' arrow for a row, it instantly expands to
>> show the child rows under it.
>> In my case, I am using a 'lazy treeview' to only populate the child rows
>> as I need to do so -- mostly because of time, but also because I want to
>> allow unlimited 'nesting'. My problem is two-fold:
>> 1) When I use a 'row-expanded' signal detector, I have to click two or
>> three times on the 'expander' arrow in order for the child rows to
>> actually show up. In fact, out of desperation I have even added the
>> following to my routine to 'force' the issue:
>> self.treeview.expand_row(path, True)
>> 2) When I add a selection 'changed' signal, it works, but it 'gets in
>> the way' of my 'row-expanded' detector i.e. even if I am very careful to
>> click just the 'expand arrow' on a row, it triggers my 'changed'
>> selection routine the first time I touch a row.
>> I would appreciate any tips to produce the desired behavior! :)
> Connect to the "test-expand-row" signal and add the rows in the
> callback. You have to put a dummy child row to get the expander to
> show and replace it with the real children in the callback.
Thanks for the tip! I wonder why my original signal caller did not work:
...but your suggestion works much better:
I also had to remove my 'extra' calls after making your change, since
they were now incompatible:
Even though this makes me extremely happy, I am still left with problem
#2 i.e. activating a 'changed' selection routine causes every initial
row expansion to be ignored -- and instead my code for row selection
kicks into effect:
selection = self.treeview.get_selection()
I do not understand why my mouse clicks on the 'expansion' arrow is
interpreted as an entire 'row selection' instead :(
More information about the pygtk