Tkinter strange Frame Size
The natural size of the widgets in the bottom frame are smaller than the frame. Tkinter needs to know how/where to allocate the extra space. You can tell it this information by giving a columm and/or row "weight".
In your case, giving column 1 of external
a weight of 1 will cause it to expand to fill the empty space in the frame.
external.grid_columnconfigure(1, weight=1)