MyTetra Share
Делитесь знаниями!
таблицы компоновки
Время создания: 07.05.2017 11:47
Раздел: Python - PyGTK - Теория - таблицы компоновки
Запись: xintrea/mytetra_db_mcold/master/base/1494146877etiiqixqiv/text.html на raw.githubusercontent.com

Давайте рассмотрим ещё один способ компоновки – Таблицы. Они могут быть чрезвычайно полезными в определённых ситуациях.

Используя таблицы, мы создаём сетку в которую сможем помещать виджеты. Виджеты могут занимать столько места, сколько мы укажем.

Сначала, конечно, мы рассмотрим функцию gtk.Table():

  table = gtk.Table(rows=1, columns=1, homogeneous=False)

Первый аргумент означает число строк создаваемой таблицы, а второй число столбцов.

Аргумент homogeneous определяет размер ячеек таблицы. Если homogeneous содержит True, ячейки будут иметь размер самого большого виджета в таблице. Если homogeneous содержит False, размер ячеек определяется самым высоким элементом в строке и самым широким в столбце.

Строки и столбцы номеруются от 0 до n, где n является числом указанным в gtk.Table(). Так, если вы указали rows = 2 и columns = 2, то размещение будет чем-то вроде этого:

   0          1          2
  0+----------+----------+
   |          |          |
  1+----------+----------+
   |          |          |
  2+----------+----------+

Заметим, что точкой отсчёта является верхний левый угол. Для того чтобы поместить виджет в коробку необходимо использовать следующий метод:

  table.attach(child, left_attach, right_attach, top_attach, bottom_attach,
               xoptions=EXPAND|FILL, yoptions=EXPAND|FILL, xpadding=0, ypadding=0)

table это экземпляр таблицы созданной с помощью gtk.Table(). Первый параметр child это виджет, который вы хотите поместить в таблицу.

Аргументы left_attachright_attachtop_attach и bottom_attach определяют место для помещения виджета, и количество занимаемых ячеек. Если вы хотите разместить кнопку в нижней правой ячейке нашей таблицы 2х2, и вы хотите чтобы кнопка занимала ТОЛЬКО её, правильные аргументы: left_attach = 1, right_attach = 2, top_attach = 1, bottom_attach = 2.

Теперь, если вы хотите чтобы виджет занял всю верхнюю строку нашей таблицы, нужно использовать left_attach = 0, right_attach = 2, top_attach = 0, bottom_attach = 1.

Аргументы xoptions и yoptions используются для указания настроек размещения и могут быть двоично сложены (OR, ИЛИ), для получения нескольких опций.

Вот эти опции:


FILL

Если ячейка таблицы будет больше виджета по размерам, то опция FILL растянет виджет по всему доступному пространству ячейки.

SHRINK

Если в ячейке не хватает места для размещения виджета (такое иногда случается при изменении размеров окна), виджеты будут исчезать за границей окна. Если указана опция SHRINK, виджеты будут уменьшаться вместе с таблицей.

EXPAND

Это заставит ячейку расшириться для занятия всего неиспользуемого места в таблице.

Padding работает также как и в коробках, создавая пустое место вокруг виджета указанное в пикселях.

Также имеются методы set_row_spacing() и set_col_spacing(). Они добавляют расстояние между строками в указанной строке или столбце.

  table.set_row_spacing(row, spacing)

и

  table.set_col_spacing(column, spacing)

Заметим, что для столбцов увеличивается расстояние справа от столбца, а для строк ниже строки.

Ещё вы можете изменить spacing для всех строк/столбцов таблицы с помощью:

  table.set_row_spacings(spacing)

и

  table.set_col_spacings(spacing)

Также заметим, что с этими вызовами, последний столбец и строка не задают пустого пространства.


Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования