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()

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