Прокручиваемое окно создано для доступа к другому виджету области больше, чем родительское окно. Некоторые виджеты, такие как TreeView и TextView имеют встроенную поддержку прокрутки. Для других, таких как Label или Table, должен быть предоставлен Viewport.
Следующий синтаксис используется для конструктора класса gtk.ScrolledWindow —
sw = gtk.ScrolledWindow(hadj, vadj)
Ниже приведены методы класса gtk.ScrolledWindow.
-
ScrolledWindow.set_hadjustment () — устанавливает горизонтальную корректировку для объекта gtk.Adjustment
-
ScrolledWindow.set_vadjustment () — устанавливает вертикальную корректировку для объекта gtk.Adjustment
-
ScrolledWindow.set_Policy (hpolicy, vpolicy) — устанавливает свойства «hscrollbar_policy» и «vscrollbar_policy». Используется одна из следующих предопределенных констант —
-
gtk.POLICY_ALWAYS — полоса прокрутки всегда присутствует
-
gtk.POLICY_AUTOMATIC — полоса прокрутки присутствует только при необходимости, т. е. содержимое больше окна
-
gtk.POLICY_NEVER — полоса прокрутки никогда не присутствует
-
-
ScrolledWindow.add_with_viewport ( child ) — этот метод используется для добавления виджета (указанного дочерним элементом ) без встроенных возможностей прокрутки в прокручиваемое окно. Это удобная функция, которая эквивалентна добавлению дочернего элемента в gtk.Viewport , а затем добавлению области просмотра в прокручиваемое окно.
ScrolledWindow.set_hadjustment () — устанавливает горизонтальную корректировку для объекта gtk.Adjustment
ScrolledWindow.set_vadjustment () — устанавливает вертикальную корректировку для объекта gtk.Adjustment
ScrolledWindow.set_Policy (hpolicy, vpolicy) — устанавливает свойства «hscrollbar_policy» и «vscrollbar_policy». Используется одна из следующих предопределенных констант —
gtk.POLICY_ALWAYS — полоса прокрутки всегда присутствует
gtk.POLICY_AUTOMATIC — полоса прокрутки присутствует только при необходимости, т. е. содержимое больше окна
gtk.POLICY_NEVER — полоса прокрутки никогда не присутствует
ScrolledWindow.add_with_viewport ( child ) — этот метод используется для добавления виджета (указанного дочерним элементом ) без встроенных возможностей прокрутки в прокручиваемое окно. Это удобная функция, которая эквивалентна добавлению дочернего элемента в gtk.Viewport , а затем добавлению области просмотра в прокручиваемое окно.
Следующий код добавляет прокручиваемое окно вокруг объекта gtk.Table с размерами 10 на 10. Поскольку объект Table не поддерживает корректировки автоматически, он добавляется в область просмотра.
sw = gtk.ScrolledWindow() table = gtk.Table(10,10)
Два вложенных цикла используются для добавления 10 строк по 10 столбцов в каждой. Виджет gtk.Button находится в каждой ячейке.
for i in range(1,11): for j in range(1,11): caption = "Btn"+str(j)+str(i) btn = gtk.Button(caption) table.attach(btn, i, i+1, j, j+1)
Эта достаточно большая таблица теперь добавляется в прокручиваемое окно вместе с окном просмотра.
sw.add_with_viewport(table)
пример
Соблюдайте следующий код —
import gtk class PyApp(gtk.Window): def __init__(self): super(PyApp, self).__init__() self.set_title("ScrolledWindow and Viewport") self.set_size_request(400,300) self.set_position(gtk.WIN_POS_CENTER) sw = gtk.ScrolledWindow() table = gtk.Table(10,10) table.set_row_spacings(10) table.set_col_spacings(10) for i in range(1,11): for j in range(1,11): caption = "Btn"+str(j)+str(i) btn = gtk.Button(caption) table.attach(btn, i, i+1, j, j+1) sw.add_with_viewport(table) self.add(sw) self.connect("destroy", gtk.main_quit) self.show_all() PyApp() gtk.main()
Приведенный выше код сгенерирует следующий вывод: