Мне бы хотелось, чтобы ширины столбцов двух отдельных сеток имели одинаковую ширину, так же, как если бы они были в одной сетке. Эти два кадра / сетки будут упакованы друг на друга в отдельном родительском виджете.
import tkinter
from tkinter import Tk, Frame, Label
class Main:
def __init__(self, master):
self.master = master
myRow1 = MyRow(self.master, [1, 2, 3], bg='grey55')
myRow2 = MyRow(self.master, ['one', 'two', 'three'], bg='grey55')
myRow1.pack(side='top')
myRow2.pack(side='top')
class MyRow(Frame):
def __init__(self, master, values, *args, **kwargs):
Frame.__init__(self, master, *args, **kwargs)
Label(self, text=values[0]).grid(row=0, column=0, padx=1, pady=1)
Label(self, text=values[1]).grid(row=0, column=1, padx=1, pady=1)
Label(self, text=values[2]).grid(row=0, column=2, padx=1, pady=1)
mw = Tk()
main = Main(mw)
mw.mainloop()
В этом примере я хотел бы, чтобы ширина столбца от myRow1
соответствовала ширине столбца от myRow2
Я мог бы иметь все ярлыки упакованными в self.master, ноМне нужно будет определить строку при создании объекта, это то, что я сделал, чтобы получить второе изображение ниже.
class MyRow(Frame):
myrow = -1
def __init__(self, master, values, *args, **kwargs):
Frame.__init__(self, master, *args, **kwargs)
MyRow.myrow += 1
Label(self.master, text=values[0]).grid(row=MyRow.myrow, column=0, padx=1, pady=1)
Label(self.master, text=values[1]).grid(row=MyRow.myrow, column=1, padx=1, pady=1)
Label(self.master, text=values[2]).grid(row=MyRow.myrow, column=2, padx=1, pady=1)
Несмотря на то, что это действительный обходной путь, мне любопытно, можно ли связать егодве сетки должны иметь одинаковую ширину столбца и / или высоту строки. Это может пригодиться, если у вас есть прокручиваемый фрейм и вы хотите, чтобы строка заголовка была всегда видимой. В настоящее время единственный способ выстроить две сетки - это вручную определить ширину.
Пользовательский интерфейс в настоящее время выглядит следующим образом: 
Я бы хотел, чтобы он выглядел следующим образом: 