Работа с несколькими кадрами в приложении Tkinter Python 3.7 - PullRequest
0 голосов
/ 31 августа 2018

Приложение, которое я пытаюсь сделать, структурировано с использованием классов. Размер окна составляет 500x430, и внутри него есть фрейм «сдерживания», который поддерживает еще два фрейма (левый и правый). В правом кадре находится больше кадров, которые будут вызываться при каждом вызове (может быть неактуально, но вызывается кнопками в левом кадре).

У меня проблемы с заполнением рамки контейнера. Я понял, что размер контейнера зависит от того, что ему нужно. Вместо этого мне нужен и правильный кадр (и каждый кадр внутри правого кадра), чтобы заполнить размер окна.

class MainApp(Tk):
    def __init__(self, *args, **kwargs):
        Tk.__init__(self, *args, **kwargs)
        self.geometry('500x430')

        container = Frame(self, bg='orange')
        container.grid(columnspan=2, rowspan=1, sticky=N+E+S+W)


        container.grid_rowconfigure(0)
        container.grid_columnconfigure(0)



        left_frame = LeftFrame(container, self)
        left_frame.grid(row=0, column=0)

        right_frame = RightFrame(container, left_frame, bg='green')
        right_frame.grid(column=1, row=0, columnspan=2)

        rightcontainer = Frame(right_frame, bg='pink')
        rightcontainer.grid()


        self.frames = {}
        for F in (Welcome, AccOne, AccTwo, AccThree):
            frame = F(rightcontainer, self)
            self.frames[F] = frame


        self.show_frame(Welcome)

    def show_frame(self, cont):
        frame = self.frames[cont]
        frame.grid(row=0, column=0, sticky=N+E+S+W)
        frame.tkraise()

Я предполагал, что добавление container.grid(sticky=N+E+S+W) заполнит все окно 500x430, но это не так.

Первый видимый кадр внутри right_frame - «Добро пожаловать». Размер метки внутри фрейма «Welcome» не заполняет ширину окна, поэтому основной фрейм «контейнер» не заполняет ширину приложения.

Если я добавлю невидимую кнопку с большой шириной в поле «Приветствие», рамка контейнера заполнит окно, но не заполнит другие рамки внутри right_frame.

Я новичок в питоне. Я надеюсь, что мой вопрос и способ, которым я объяснил, был ясен. Любая помощь будет оценена.

...