title: TKinter focus command not working on the widget of the second called form from stack of forms
body: <p>I used the codes (below) from <a href="https://stackoverflow.com/questions/7546050/switch-between-two-frames-in-tkinter/38306342#38306342">Switch between two frames in tkinter</a>
  (thanks to <a href="https://stackoverflow.com/users/7432/bryan-oakley">Brian Oakley</a>) on my first pilot project using Python3.5 + Tkinter and was having issue doing a "focus" on an <code>Entry</code> widget from the second form (<code>PageOne</code>), the focus is not working at all.</p>
  
  <p>However, if I do the "focus" on any widget from the first or starting form (<code>StartPage</code>) it works! And if I switch calling first <code>PageOne</code> before <code>StartPage</code> the "focus" on the second form would now work. Can you please provide some tips on how I would handle doing a "focus" on any of the widget on the second form (<code>PageOne</code>) based on the code below?</p>
  
  <pre><code>import tkinter as tk
  TITLE_FONT = ("Helvetica", 18, "bold")
  
  class SampleApp(tk.Tk):
      def __init__(self, *args, **kwargs):
         tk.Tk.__init__(self, *args, **kwargs)
  
         # the container is where we'll stack a bunch of frames
         # on top of each other, then the one we want visible
         # will be raised above the others
         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 (StartPage, PageOne, PageTwo):
             page_name = F.__name__
             frame = F(parent=container, controller=self)
             self.frames[page_name] = frame
  
             # put all of the pages in the same location;
             # the one on the top of the stacking order
             # will be the one that is visible.
             frame.grid(row=0, column=0, sticky="nsew")
  
         self.show_frame("StartPage")
  
      def show_frame(self, page_name):
          '''Show a frame for the given page name'''
          frame = self.frames[page_name]
          frame.tkraise()
  
  
  class StartPage(tk.Frame):
  
      def __init__(self, parent, controller):
          tk.Frame.__init__(self, parent)
          self.controller = controller
          label = tk.Label(self, text="This is the start page", font=TITLE_FONT)
          label.pack(side="top", fill="x", pady=10)
  
          button1 = tk.Button(self, text="Go to Page One",
                              command=lambda: controller.show_frame("PageOne"))
          button2 = tk.Button(self, text="Go to Page Two",
                              command=lambda: controller.show_frame("PageTwo"))
          button1.pack()
          button2.pack()
  
  
  class PageOne(tk.Frame):
  
      def __init__(self, parent, controller):
          tk.Frame.__init__(self, parent)
          self.controller = controller
          label = tk.Label(self, text="This is page 1", font=TITLE_FONT)
          label.pack(side="top", fill="x", pady=10)
          button = tk.Button(self, text="Go to the start page",
                             command=lambda: controller.show_frame("StartPage"))
          button.pack()
  
  
  class PageTwo(tk.Frame):
  
      def __init__(self, parent, controller):
          tk.Frame.__init__(self, parent)
          self.controller = controller
          label = tk.Label(self, text="This is page 2", font=TITLE_FONT)
          label.pack(side="top", fill="x", pady=10)
          button = tk.Button(self, text="Go to the start page",
                             command=lambda: controller.show_frame("StartPage"))
          button.pack()
  
  if __name__ == "__main__":
      app = SampleApp()
      app.mainloop()
  </code></pre>