title: tkraise not hiding 'bottom' frame
body: <p>I'm struggling with <code>tkraise</code> not hiding the 'bottom' frame in my app.
  I have two frames, one contains a Listbox and is packed to the left and the other will display options for each item in the listbox and is packed to the right.
  My problem is that I can see the <code>Future</code> page when I select <code>General</code> and vise versa. I copied and modified it from my working main app but I don't know what I did wrong to break it for this one.</p>
  
  <pre><code># All settings windows and forms labels are built in here
  
  import tkinter as tk
  # from main import WinSize
  from tkinter import Listbox, END, ttk
  
  
  class Settings(tk.Tk):
  
      def __init__(self, *args, **kwargs):
          tk.Tk.__init__(self, *args, **kwargs)
  
          # create frame for listbox and parameters area
          self.list_container = ttk.Frame(self, relief='sunken')
          self.list_container.pack(side='left', fill='y', expand=False)
          self.param_container = ttk.Frame(self)
          self.param_container.pack(side='top', fill='both', expand=True)
  
  
          self.options_list = Listbox(self.list_container, selectmode='single')
  
          for choice in ['General', 'Future']:
              self.options_list.insert(END, choice)
  
  
          self.okbutton = ttk.Button(self.param_container, text="OK", command= self.destroy)
          self.okbutton.grid_rowconfigure(0, weight=1)
          self.okbutton.grid_columnconfigure(0, weight=1)
          self.okbutton.grid(row=2, column=2, sticky='nsew')
  
          # Grid layout for Settings window
          self.options_list.grid(row=0, column=0, sticky='nsew')
  
          self.list_container.grid_rowconfigure(1, weight=1)
          self.list_container.grid_columnconfigure(1, weight=1)
  
          self.param_container.grid_rowconfigure(1, weight=1)
          self.param_container.grid_columnconfigure(1, weight=1)
  
          # create empty TUPLE for future frames
          self.frames = {}
          # generate calls for frames
          for F in (General, Future):
              self.page_name = F.__name__
              self.frame = F(parent=self.param_container, controller=self)
              self.frames[self.page_name] = self.frame
  
          self.options_list.select_set(0)
          self.options_list.bind("&lt;&lt;ListboxSelect&gt;&gt;", self.onselect)
          self.options_list.event_generate("&lt;&lt;ListboxSelect&gt;&gt;")
  
      # grab value of listbox selection and call show_frame
      def onselect(self, event):
          self.widget = event.widget
          self.value = self.widget.get(self.widget.curselection())
          print(self.value)
          self.show_frame(self.value)
  
      # show corresponding frame based on listbox selection
      def show_frame(self, page_name):
          # show a frame for the given page name
          self.frame = self.frames[page_name]
          self.frame.grid(row=0, column=1, sticky='nsew')
          self.frame.tkraise()
          print("Show Frame")
  
  
  class General(tk.Frame):
      def __init__(self, parent, controller):
          tk.Frame.__init__(self, parent)
          self.controller = controller
          self.optiontitle = ttk.Label(parent, text='General')
          self.optiontitle.grid(row=0, column=0, sticky='nsew')
          self.dirlabel = ttk.Label(parent, text='Default Save Directory')
          self.dirlabel.grid(row=1, column=1, sticky='s')
  
  
  class Future(tk.Frame):
      def __init__(self, parent, controller):
          tk.Frame.__init__(self, parent)
          self.controller = controller
          test1 = ttk.Label(self, text='Future')
          test1.pack()
  
  
  app=Settings()
  app.mainloop()
  </code></pre>
  
  <p>I want to say it may be something to do with my grid layout but it doesn't make sense since the two 'pages' are not coupled (or supposed to be) with each other.</p>