Учебники

PyGTK — ScrolledWindow Class

Прокручиваемое окно создано для доступа к другому виджету области больше, чем родительское окно. Некоторые виджеты, такие как 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()

Приведенный выше код сгенерирует следующий вывод: