[pygtk] Scrolling gtk.Viewport to a specific location

Thomas Guettler hv at tbz-pariv.de
Mon Jun 23 22:32:11 WST 2008


Mitko Haralanov schrieb:
> I have a gtk.ScrolledWindow, which has a gtk.VBox added with a
> gtk.Viewport.
> What I would like to do is be able to scroll the gtk.ScrolledWindow to
> a specific location (one of the gtk.VBox children). I know how to do
> the actual scrolling (using the h/vadjustments) but how do I determine
> how much to scroll it by so the correct child is in view?
>
> Thanks for the help?
>
>   
Does this help you:

http://faq.pygtk.org/index.py?req=show&file=faq10.010.htp


      10.10. <http://faq.pygtk.org/index.py?req=show&file=faq10.010.htp>
      How do I adjust a ScrolledWindow to adjust to a given child widget?

One common request is to get a ScrolledWindow to adjust to display one 
of the widgets it contains -- frequently you'd like to adjust the 
scrollbar to display the widget that receives focus. This is possible by 
using the set_value method of the ScrolledWindow's adjustment object in 
conjunction with the child widget's `focus_in_event' signal. An 
(untested) example follows:

 def focus_in(widget, event, adj):
   alloc = widget.get_allocation()        
   if alloc.y < adj.value or alloc.y > adj.value + adj.page_size:
     adj.set_value(min(alloc.y, adj.upper-adj.page_size))

 scrolled_window = gtk.ScrolledWindow()
 adj = scrolled_window.get_vadjustment()
 # ... create child widget
 child.connect('focus_in_event', focus_in, adj)

This should make the scrollbar adjust automatically whenever child 
receives focus.


-- 
Thomas Guettler, http://www.thomas-guettler.de/
E-Mail: guettli (*) thomas-guettler + de



More information about the pygtk mailing list