The closest I've been able to get is a bit of a kludge. I use Perl, not Python, so I'll just describe my technique.
Connect to the treeview's scroll-event signal and watch for direction=left/right (or smooth with get_scroll_deltas() returning non-zero for the X axis). Be sure to return FALSE for vertical scrolling so that remains unaffected. Then show/hide the columns after the fixed one(s) and return TRUE.
For example: when scrolling right, hide column 2, then 3, etc. When scrolling left, show the highest number column that's hidden.
There are a couple drawbacks:
- It's not as smooth as what you're looking for (columns can't be partially hidden).
- Doesn't work with the scrollbar, only when tilting the mouse wheel. Not all mice have tiltable wheels.