Динамически настраивать сетку всех подчиненных ткинтеров - PullRequest
0 голосов
/ 05 октября 2018

Я пытаюсь создать табличную программу tkinter gui, что-то со структурой, подобной this

На этом рисунке есть 2 типа Frame: рамка заголовка (черный) и фрейм данных (синий).Во фреймах данных столбцы 1 и 2 динамически изменяют свой размер в зависимости от длины данных.

Я хочу спросить, есть ли когда-нибудь ширина столбца фрейма данных, есть ли способ обновить ширину столбцов в других фреймах данных и фрейме заголовка, чтобы они соответствовали ширине столбцов?в кадрах данных.

Итак, предположим, что столбец 1 фрейма 2 увеличивает свою ширину, столбец 1 фрейма заголовка, фрейма 0 и фрейма 1 также должен измениться, чтобы выровняться с новой шириной столбца 1 фрейма 2.

Iнадеюсь, я разъяснил свой вопрос

1 Ответ

0 голосов
/ 06 октября 2018

Если это простая конструкция с несколькими строками данных, для которых не требуются полосы прокрутки и т. Д., Самый простой способ - не разделять заголовки и строки данных на разные поля.Просто добавьте все в сетку, и он автоматически настроится:

from tkinter import *

root = Tk()

data_list = [('No.', 'Name', 'Data'),
             (1, 'Amazon', 'Books'),
             (2, 'Python', 'Programming language')]

for index, data in enumerate(data_list):
    a = Label(root, text=data[0], bg='khaki')
    a.grid(row=index, column=0, sticky='e', pady=(5,0), padx=(5,0))
    b = Label(root, text=data[1], bg='khaki')
    b.grid(row=index, column=1, sticky='w', pady=(5,0), padx=(5,0))
    c = Label(root, text=data[2], bg='khaki')
    c.grid(row=index, column=2, sticky='w', pady=(5,0), padx=(5,0))

root.mainloop()

Если это большие объемы данных, полосы прокрутки и т. Д., Вы должны исследовать древовидную структуру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...