Реализация возможности растягивания виджетов, размещаемых по сетке

realizaciya vozmozhnosti rastyagivaniya vidzhetov razmeshhaemyh po setke Экскурсия по tkinter, часть 2

А теперь некоторые практические замечания: сетки, которые мы видели до сих пор, имеют фиксированный размер — они не увеличиваются в размере при увеличении размеров содержащего их окна. Пример 9.22 реализует чрезвычайно патриотическую форму ввода с применением обоих методов, grid и pack, но в нем выполняются дополнительные настройки, необходимые, чтобы обеспечить растягивание всех виджетов в обоих окнах вместе со своими окнами.

Пример 9.22. PP4E\Gui\Tour\Grid\grid3.py

“добавляет метку в верхней части окна и возможность растягивания форм”

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

def gridbox(root):

Label(root, text=’Grid’).grid(columnspan=2) row = 1 for color in colors:

lab = Label(root, text=color, relief=RIDGE, width=25) ent = Entry(root, bg=color, relief=SUNKEN, width=50) lab.grid(row=row, column=0, sticky=NSEW) ent.grid(row=row, column=1, sticky=NSEW) root.rowconfigure(row, weight=1) row += 1

root.columnconfigure(0, weight=1) root.columnconfigure(1, weight=1)

def packbox(root):

Label(root, text=’Pack’).pack() for color in colors: row = Frame(root) lab = Label(row, text=color, relief=RIDGE, width=25) ent = Entry(row, bg=color, relief=SUNKEN, width=50) row.pack(side=TOP, expand=YES, fill=BOTH) lab.pack(side=LEFT, expand=YES, fill=BOTH) ent.pack(side=RIGHT, expand=YES, fill=BOTH)

root = Tk()

gridbox(Toplevel(root))

packbox(Toplevel(root))

Button(root, text=’Quit’, command=root.quit).pack()

mainloop()

Если запустить этот сценарий, он создаст картину, изображенную на рис. 9.32. Снова создаются отдельные окна для методов pack и grid с полями ввода в правой части, окрашенными в красный, белый и голубой цвета (или для читателей, которые не работают параллельно на компьютере: серый, белый и несколько более темно-серый).

Рис. 9.32. Окна для схем размещения на основе grid и pack до изменения размеров

 

Однако на этот раз изменение размеров обоих окон с помощью мыши заставляет все встроенные в них метки и поля ввода растягиваться вместе с окнами, как показано на рис. 9.33 (где в поля ввода был введен текст).

Рис. 9.33. Окна для схем размещения на основе grid и pack после изменения размера

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

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

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