Основы работы с сеткой: еще раз о формах ввода

osnovy raboty s setkoj eshhe raz o formah vvoda Экскурсия по tkinter, часть 2

Начнем с базовых понятий. В примере 9.18 создается таблица из меток и полей ввода — уже знакомых нам виджетов Label и Entry. Однако в данном случае они располагаются по сетке.

Пример 9.18. PP4E\Gui\Tour\Grid\grid1.py

from tkinter import * colors = [‘red’, ‘green’, ‘orange’, ‘white’, ‘yellow’, ‘blue’]

r = 0

for c in colors:

Label(text=c, relief=RIDGE, width=25).grid(row=r, column=0) Entry(bg=c, relief=SUNKEN, width=50).grid(row=r, column=1) r += 1

mainloop()

Расположение по сетке заключается в назначении виджетам номеров рядов и колонок, отсчет которых начинается с 0, — библиотека tkinter использует эти координаты, а также размеры виджетов, чтобы расположить виджеты внутри контейнера. Это напоминает действие метода pack, только в данном случае понятия сторон и порядка прикрепления заменяются рядами и колонками.

Если запустить этот сценарий, то он создаст окно, изображенное на рис. 9.29 с данными, введенными в некоторые поля. И снова эта книга не позволяет увидеть цвета, отображаемые в правой части, поэтому вам придется включить свое воображение (или запустить сценарий на своем компьютере).

Рис. 9.29. Менеджер компоновки grid в псевдоживых цветах

 

В действительности это та же самая классическая структура формы ввода, которую мы видели в предыдущей главе. Метки в левой части описывают данные, которые должны вводиться в поля справа.

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

Label().grid(row=r, column=0)

Entry().grid(row=r, column=1)

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

То есть благодаря размещению виджетов по рядам и колонкам они должным образом выравниваются по обоим направлениям. Использование метода pack с фреймами-рядами позволяет добиться того же эффекта, если метки будут иметь фиксированную длину (как было показано в главе 8), однако сетки точнее отражают табличную структуру интерфейсов, включая формы ввода, а также большие таблицы в целом. Следующий раздел иллюстрирует эти различия в программном коде.

Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011

Оцените статью
Секреты программирования
Добавить комментарий