PyGTK - класс ScrolledWindow
Прокручиваемое окно создается для доступа к другому виджету, площадь которого больше родительского окна. Некоторые виджеты, такие как TreeView и TextView, имеют встроенную поддержку прокрутки. Для других, таких как Label или Table, должно быть предусмотрено окно просмотра.
Для конструктора класса 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) - этот метод используется для добавления виджета (указанного дочерним элементом) без встроенных возможностей прокрутки в прокручиваемое окно. Это удобная функция, эквивалентная добавлению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()
Приведенный выше код сгенерирует следующий вывод -