Python Tkinter - есть возможность связать менеджер геометрии двух отдельных сеток - PullRequest
0 голосов
/ 16 октября 2019

Мне бы хотелось, чтобы ширины столбцов двух отдельных сеток имели одинаковую ширину, так же, как если бы они были в одной сетке. Эти два кадра / сетки будут упакованы друг на друга в отдельном родительском виджете.

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)

Несмотря на то, что это действительный обходной путь, мне любопытно, можно ли связать егодве сетки должны иметь одинаковую ширину столбца и / или высоту строки. Это может пригодиться, если у вас есть прокручиваемый фрейм и вы хотите, чтобы строка заголовка была всегда видимой. В настоящее время единственный способ выстроить две сетки - это вручную определить ширину.

Пользовательский интерфейс в настоящее время выглядит следующим образом: Currently looks like this.

Я бы хотел, чтобы он выглядел следующим образом: I would like it to look like this

1 Ответ

1 голос
/ 16 октября 2019

Есть возможность связать менеджер геометрии двух отдельных сеток

Нет, это не так. Вы должны вручную заставить столбцы иметь одинаковую ширину.

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