Первое, что вам нужно сделать для отладки, это временно придать вашим рамкам отличительные цвета. Это позволяет легко увидеть, какие из нескольких вложенных фреймов растут, а какие нет. Иногда также полезно добавить дополнительные отступы, чтобы вы могли видеть внутренние края фреймов, но в этом случае это не обязательно.
Итак, начнем с придания цвета различным кадрам:
class OpenFile(tk.Tk):
def __init__(self,*args,**kwargs):
...
container = tk.Frame(self, background="pink")
class StartPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent, background="blue")
...
containerinput=tk.Frame(self, background="yellow")
Когда вы это делаете, становится ясно, что синяя рамка расширяется по вашему желанию, но желтая рамка внутри нее не расширяется.
Причина в том, что вы помещаете желтую рамку (containerinput
) в рамку StartPage
, но не настраиваете ее для изменения размера. Поскольку вы добавили это с помощью grid
, вы должны указать tkinter, какие строки и столбцы должны получить дополнительное лишнее пространство. Вы делаете это с grid_rowconfigure
и grid_columnconfigure
на кадре, в котором находится containerinput
. В этом случае этот кадр self
:
containerinput=tk.Frame(self, background="yellow")
containerinput.grid(row=2,column=0,columnspan=4,sticky="nsew")
...
self.grid_rowconfigure(2, weight=1)
self.grid_columnconfigure(0, weight=1)
Примечание. Вам по-прежнему необходимо вызывать grid_rowconfigure
и grid_columnconfigure
на containerinput
, поскольку вы также размещаете виджеты внутри этого фрейма с помощью grid
.