title: tkinter Python GUI Frame Positioning
body: <p>How can you position the frames (and or elements inside the frames) such that the radio buttons at the bottom are shifted to the left outer edge of the GUI interface and the title is shifted to the center of the GUI interface?</p>
  <p>GUI</p>
  <p><a href="https://i.stack.imgur.com/xGQqL.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/xGQqL.png" alt="enter image description here" /></a></p>
  <pre class="lang-py prettyprint-override"><code>import tkinter
  
  root = tkinter.Tk()
  root.title('Bookings')
  root.geometry('700x500')
  
  frame_title = tkinter.Frame(root)
  frame_fields = tkinter.Frame(root)
  frame_scan = tkinter.Frame(root)
  frame_credentials = tkinter.Frame(root)
  frame_site = tkinter.Frame(root)
  frame_change = tkinter.Frame(root)
  
  
  def passx():
      pass
  
  
  frame_title.grid(row=0, column=0, padx=(50, 0))
  title = tkinter.Label(frame_title, text=&quot;Bookings Scan&quot;, font=(&quot;Helvetica&quot;, 24))
  title.grid(pady=(27, 10))
  frame_fields.grid(row=1, column=0, padx=(30, 0), pady=(10, 0))
  start_date_lbl = tkinter.Label(frame_fields, text=&quot;Enter the start date: &quot;, font=(&quot;Helvetica&quot;, 16))
  start_date_lbl.grid(column=0, row=0, pady=15)
  start_date_unp = tkinter.Entry(frame_fields, width=11, font=(&quot;Helvetica&quot;, 16))
  start_date_unp.grid(column=1, row=0)
  start_date = start_date_unp.get()
  end_date_lbl = tkinter.Label(frame_fields, text=&quot;Enter the end date: &quot;, font=(&quot;Helvetica&quot;, 16))
  end_date_lbl.grid(column=0, row=1)
  end_date_unp = tkinter.Entry(frame_fields, width=11, font=(&quot;Helvetica&quot;, 16))
  end_date_unp.grid(column=1, row=1)
  end_date = end_date_unp.get()
  frame_scan.grid(row=1, column=1, padx=(45, 0))
  scan_btn = tkinter.Button(frame_scan, text=&quot;Scan&quot;, command=passx, height=2, width=8, font=(&quot;Helvetica&quot;, 16))
  scan_btn.grid(row=0, column=0, pady=(10, 0))
  frame_credentials.grid(row=2, column=0)
  credential = tkinter.IntVar(value=0)
  tkinter.Radiobutton(frame_credentials, text='Username', variable=credential, value=1, font=(&quot;Helvetica&quot;, 16)).grid(column=1, row=4, sticky='W', pady=(43, 50))
  tkinter.Radiobutton(frame_credentials, text='Password', variable=credential, value=2, font=(&quot;Helvetica&quot;, 16)).grid(column=1, row=5, sticky='W')
  frame_site.grid(row=2, column=1, pady=(40, 0))
  site = tkinter.IntVar(value=0)
  tkinter.Radiobutton(frame_site, text='PearsonVUE', variable=site, value=1, font=(&quot;Helvetica&quot;, 16)).grid(column=0, row=0, sticky='W', pady=8)
  tkinter.Radiobutton(frame_site, text='Kryterion', variable=site, value=2, font=(&quot;Helvetica&quot;, 16)).grid(column=0, row=1, sticky='W')
  tkinter.Radiobutton(frame_site, text='PSI PAN', variable=site, value=3, font=(&quot;Helvetica&quot;, 16)).grid(column=0, row=2, sticky='W', pady=8)
  tkinter.Radiobutton(frame_site, text='Scantron', variable=site, value=4, font=(&quot;Helvetica&quot;, 16)).grid(column=0, row=3, sticky='W')
  tkinter.Radiobutton(frame_site, text='PSI Atlas', variable=site, value=5, font=(&quot;Helvetica&quot;, 16)).grid(column=0, row=4, sticky='W', pady=8)
  frame_change.grid(row=2, column=2, padx=25, pady=(20, 0))
  change_btn = tkinter.Button(frame_change, text=&quot;Change&quot;, command=passx, height=2, width=8, font=(&quot;Helvetica&quot;, 16))
  change_btn.grid(column=3, row=3)
  root.mainloop()
  </code></pre>