On pourrait diviser grossièrement les widgets ajustables en deux catégories : ceux qui utilisent et nécessitent des unités spécifiques pour les valeurs dont on vient de parler, et ceux qui les traitent comme des nombres arbitraires. Ce dernier groupe inclut les widgets d'intervalle (barre de défilement et gradateur), la barre de progression et les boutons fléchés. Il s'agit de l'ensemble des widgets qui, de par leur nature même, sont ajustés directement par l'utilisateur au moyen de la souris ou du clavier. Ils traitent toujours les valeurs données aux arguments lower et upper d'un ajustement comme un intervalle à l'intérieur duquel l'utilisateur peut manipuler la valeur (l'argument value) de l'ajustement. Par défaut, ils ne modifient que cette dernière.
L'autre groupe inclut la zone de texte, la vue orientable, la liste composée et la fenêtre à défilement. Tous ces widgets utilisent des valeurs en pixels pour leurs ajustements. Il s'agit, de plus, de l'ensemble des widgets qui sont ajustés indirectement, par l'intermédiaire de barres de défilement. Même si tous les widgets qui utilisent des ajustements peuvent soit créer les leurs, soit utiliser ceux qu'on leur fournit, il vaut mieux, en règle générale, laisser cette catégorie-là créer les siens. La plupart du temps, ils finissent par ne tenir compte d'aucune valeur provenant des ajustements qu'on leur a affectés, excepté la valeur elle-même (value) ; les résultats sont, en général, indéfinis (il vous faudra chercher dans les codes sources, et ils peuvent être différents d'un widget à l'autre).
Vous devez être en train de vous dire que puisque les zones de texte et les vues orientables insistent pour tout définir excepté la valeur de leurs ajustements, et puisque les barres de défilement ne touchent qu'à la valeur de l'ajustement, alors si l'on partage un ajustement entre une barre de défilement et une zone de texte, manipuler la barre de défilement devrait ajuster comme par magie la zone de texte. Parfaitement ! Ça se passe comme ça :
# Elle crée ses propres ajustements vue_orientable = gtk.Viewport() # l'ajustement qui vient d'être créé servira aussi pour la barre de défilement barredef_v = gtk.VScrollbar(vue_orientable.get_vadjustment())