Варианты интервалов Tkinter.grid?

Я новичок в Tkinter, и я попытался создать приложение с помощью диспетчера сетки. Тем не менее, я не могу найти способ использовать его так, как я хочу. Что мне нужно сделать, так это смоделировать сетку, полную "ячеек", чтобы я мог разместить, например, метку в ячейке (3,8) или кнопку в ячейке (5,1). Вот пример того, что я пробовал:

import tkinter as tk
root = tk.Tk()

label = tk.Label(root, text = 'Label')
label.grid(column = 3, row = 8)

button = tk.Button(root, text = 'Button')
button.grid(column = 5, row = 1)

Tkinter сохраняет относительную позицию каждого виджета (т.е. button выше и справа от label), но он игнорирует любое пространство между ними. Я немного искал эту проблему и узнал о weightно это не то, что я ищу; Я хотел бы что-то независимое от label а также buttonмакеты. Спасибо за помощь!

2 ответа

Решение

Вы можете указать интервал для столбцов / строк в сетке (включая те, которые не содержат виджетов), запустив grid_columnconfigure а также grid_rowconfigure методы для родителя виджетов (в этом случае родитель будет root).

Например, чтобы установить минимальную ширину для 4-го столбца, добавьте последнюю строку в ваш код:

import Tkinter as tk
root = tk.Tk()

label = tk.Label(root, text = 'Label')
label.grid(column = 3, row = 8)

button = tk.Button(root, text = 'Button')
button.grid(column = 5, row = 1)

root.grid_columnconfigure(4, minsize=100)  # Here

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

col_count, row_count = root.grid_size()

for col in xrange(col_count):
    root.grid_columnconfigure(col, minsize=20)

for row in xrange(row_count):
    root.grid_rowconfigure(row, minsize=20)

Интересно, что Effbot утверждает:

minsize = Определяет минимальный размер строки. Обратите внимание, что если строка полностью пуста, она не будет отображаться, даже если эта опция установлена.

(курсив мой), но, кажется, он работает даже для пустых строк и столбцов, насколько я пытался.

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

Другие вопросы по тегам