In the frame of the page, I weighed two frames inside the innerFrame so that each of them took up half the screen, however, when I add the widget to one of these frames, I used the list as an example, how big it is, one of the frames now takes longer than the other . How to make sure that frames do not change size when adding a widget, and each of them remains half the size of the window?


Here is my code:
import tkinter as tk from tkinter import ttk class Program(tk.Tk): def __init__(self, *args, **kwargs): tk.Tk.__init__(self, *args, **kwargs) tk.Tk.iconbitmap(self, default = "") tk.Tk.wm_title(self, "") container = tk.Frame(self) container.pack(side="top", fill="both", expand=True) container.grid_rowconfigure(0, weight=1) container.grid_columnconfigure(0, weight=1) self.frames = {} for F in (Page, Other): frame = F(container, self) self.frames[F] = frame frame.grid(row = 0, column = 0, sticky = "nsew") self.show_frame(Page) def show_frame(self,cont): frame = self.frames[cont] frame.tkraise() class Page(tk.Frame): def __init__(self, parent, controller): tk.Frame.__init__(self, parent) innerFrame = tk.Frame(self, bg="red") innerFrame.place(relx=.5, rely=.5, anchor="c", relwidth=1.0, relheight=1.0) innerFrame.grid_rowconfigure(0, weight=1) innerFrame.grid_rowconfigure(1, weight=1) innerFrame.grid_columnconfigure(0, weight=1) #First Half frameOne = tk.Frame(innerFrame, bg="pink") frameOne.grid(row=0, sticky="NSWE") #Second Half frameTwo = tk.Frame(innerFrame, bg="green") frameTwo.grid(row=1, sticky="NSWE") lb = tk.Listbox(frameTwo) lb.pack(fill="both", expand=True) class Other(tk.Frame): def __init__(self, parent, controller): tk.Frame.__init__(self, parent) app = Program() app.state('zoomed') app.mainloop()