Какую комбинацию виджетов GTK использовать для прокручиваемого столбца виджетов? - PullRequest
3 голосов
/ 23 января 2009

Я работаю с PyGTK, пытаясь придумать комбинацию виджетов, которая будет делать следующее:

  • Позвольте мне добавить бесконечное количество виджетов в столбце
  • Обеспечьте вертикальную полосу прокрутки, чтобы добраться до тех, которые бегут от основания
  • Настройка ширины виджетов для заполнения доступного горизонтального пространства при изменении размера окна

Спасибо - я новичок в GTK.

Ответы [ 2 ]

7 голосов
/ 23 января 2009
  • Бесконечное количество виджетов в столбце: звучит как GtkVBox.
  • Вертикальная полоса прокрутки: поместите ваш VBox в GtkScrolledWindow.
  • Горизонтальное растяжение: для этого необходимо установить соответствующие свойства для VBox, ScrolledWindow и других ваших виджетов. По крайней мере, в Glade настройки по умолчанию, по-видимому, в основном справляются с этим (возможно, вы захотите изменить политику полосы прокрутки в ScrolledWindow).

Теперь для подвоха. Если вы просто сделаете то, что я перечислил выше, содержимое VBox попытается изменить размеры как по вертикали, так и по горизонтали, и вы не получите свою полосу прокрутки. Решением является размещение вашего VBox в GtkViewport.

Итак, окончательная иерархия - ScrolledWindow (Viewport (VBox (widgets))).

0 голосов
/ 26 марта 2011

Что Стив сказал в коде:

vbox = gtk.VBox()
vbox.pack_start(widget1, 1, 1) ## fill and expand
vbox.pack_start(widget2, 1, 1) ## fill and expand
vbox.pack_start(widget3, 1, 1) ## fill and expand
swin = gtk.ScrolledWindow()
swin.add_with_viewport(vbox)
...