У меня проблемы с пониманием диапазона строк TKinter и управления сеткой.Python

Программы на Python
Anonymous
У меня проблемы с пониманием диапазона строк TKinter и управления сеткой.

Сообщение Anonymous »

Я пытаюсь понять использование сетки TKinter и, в частности, аргументов rowspan и columnspan.
Я создал небольшой тест, чтобы понять систему сетки Tkinter. Я хочу иметь два разных фрейма, каждый со своей сеткой. Во втором подкадре у меня есть метки с диапазоном строк 1 и 2. Я ожидаю, что метки с диапазоном строк = 2 будут в два раза выше, чем метки с диапазоном строк = 1, но это не так:

Код: Выделить всё

from tkinter import *
import tkinter as tk

root = Tk()
mainframe = tk.Frame(root)
mainframe.grid(row=0, column=0)

for i in range(2):
mainframe.rowconfigure(i, weight=1)
mainframe.columnconfigure(i, weight=1)

subframe1 = tk.Frame(mainframe)
subframe1.grid(column=0, row=0, sticky="nswe")
for i in range(4):
subframe1.rowconfigure(i, weight=1)
for i in range(2):
subframe1.columnconfigure(i, weight=1)

subframe2 = tk.Frame(mainframe)
subframe2.grid(column=1, row=0, sticky="nswe")
for i in range(4):
subframe2.rowconfigure(i, weight=1)
for i in range(2):
subframe2.columnconfigure(i, weight=1)

tk.Label(subframe1, text="Label 1", bg="gray").grid(column=0, row=0, sticky="nswe")
tk.Label(subframe1, text="Label 2", bg="red").grid(column=1, row=0, sticky="nswe")
tk.Label(subframe1, text="Label 3", bg="cyan").grid(column=0, row=1, sticky="nswe")
tk.Label(subframe1, text="Label 4", bg="blue").grid(column=1, row=1, sticky="nswe")
tk.Label(subframe1, text="Label 9", bg="gray").grid(column=0, row=2, sticky="nswe")
tk.Label(subframe1, text="Label 10", bg="red").grid(column=1, row=2, sticky="nswe")
tk.Label(subframe1, text="Label 11", bg="cyan").grid(column=0, row=3, sticky="nswe")
tk.Label(subframe1, text="Label 12", bg="blue").grid(column=1, row=3, sticky="nswe")

tk.Label(subframe2, text="Label 5", bg="yellow").grid(column=0, row=0, rowspan=2, sticky="nswe")
tk.Label(subframe2, text="Label 6", bg="grey").grid(column=1, row=0, rowspan=1, sticky="nswe")
tk.Label(subframe2, text="Label 7", bg="red").grid(column=0, row=2, rowspan=1, sticky="nswe")
tk.Label(subframe2, text="Label 8", bg="purple").grid(column=1, row=2, rowspan=2, sticky="nswe")

mainframe.mainloop()

Вот результат
Может кто-нибудь объяснить мне, почему метки 6 и 7 не вдвое меньше меток 5 и 8?

Подробнее здесь: https://stackoverflow.com/questions/788 ... -managment

Вернуться в «Python»