Each frame spans one column. When we configure the grid, we need to ensure that the column can be resized. Since we're essentially lining things up vertically, each frame widget gets placed in its own row, starting with row 0. Because only the main application area needs to grow vertically, we should configure the grid for that row to expand. The other rows default to a weight of 0.
Any extra space is divided based on the relative weights of the rows.
Since row 2 is the only row with a weight, it gets all the space. This means that as the cell grows, the widget will also grow. Tcl file using the grid command. I've simplified the example, so that there is only one menu and a simple toolbar button. Try it out and resize the window.