title: tkinter gui layout using frames and grid
body: <p>My <a href="https://i.stack.imgur.com/9VHvr.jpg" rel="noreferrer">gui layout</a> </p>
  
  <p><img src="https://i.stack.imgur.com/9VHvr.jpg" alt="gui layout"></p>
  
  <p>looks almost nothing like <a href="https://i.stack.imgur.com/bYPtK.jpg" rel="noreferrer">what I expect</a></p>
  
  <p><img src="https://i.stack.imgur.com/bYPtK.jpg" alt="what I expect"></p>
  
  <p>so I assume there are some basics that I don't understand.</p>
  
  <p>I assumed that frames contain their own 'grid space' (row, column) but the behavior I see doesn't bear that out, and I'm at a loss for getting things working the way I want for the top frame.  My labels are supposed to be on the same row L to R, under a 'frame label' that spans the entire frame - except they don't. I want the actual to look more like the goal jpg, and I want to use grid to do it.</p>
  
  <p>You can just see one of the entry fields to the right of the green frame.  Why is it going there ?</p>
  
  <pre><code>from Tkinter import *
  
  root = Tk()
  root.title('Model Definition')
  root.resizable(width=FALSE, height=FALSE)
  root.geometry('{}x{}'.format(460, 350))
  
  top_frame = Frame(root, bg='cyan', width = 450, height=50, pady=3).grid(row=0, columnspan=3)
  Label(top_frame, text = 'Model Dimensions').grid(row = 0, columnspan = 3)
  Label(top_frame, text = 'Width:').grid(row = 1, column = 0)
  Label(top_frame, text = 'Length:').grid(row = 1, column = 2)
  entry_W = Entry(top_frame).grid(row = 1, column = 1)
  entry_L = Entry(top_frame).grid(row = 1, column = 3)
  #Label(top_frame, text = '').grid(row = 2, column = 2)
  
  center = Frame(root, bg='gray2', width=50, height=40, padx=3, pady=3).grid(row=1, columnspan=3)
  ctr_left = Frame(center, bg='blue', width=100, height=190).grid(column = 0, row = 1, rowspan = 2)
  ctr_mid = Frame(center, bg='yellow', width=250, height=190, padx=3, pady=3).grid(column = 1, row=1, rowspan=2)
  ctr_right = Frame(center, bg='green', width=100, height=190, padx=3, pady=3).grid(column = 2, row=1, rowspan=2)
  
  btm_frame = Frame(root, bg='white', width = 450, height = 45, pady=3).grid(row = 3, columnspan = 3)
  btm_frame2 = Frame(root, bg='lavender', width = 450, height = 60, pady=3).grid(row = 4, columnspan = 3)
  
  
  root.mainloop()
  </code></pre>
  
  <p>So specifically, where did my labels and Entry widgets go, and how do I get them to look more like the goal (top frame, the rest are for later).</p>