title: Tkinter Treeview not showing newly inserted items, no errors given
body: <p>I'm building a desktop application that lets you insert some data into a form and then the data is displayed in a series (3) of Treeview widgets.
  This is the form that I'm using to enter new data:</p>
  
  <p><a href="https://i.stack.imgur.com/O17LF.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/O17LF.png" alt="enter image description here"></a></p>
  
  <p>It's in a Toplevel widget. When the Add button is pressed the new data is stored in a file and it also should insert the new data in the corresponding Treeview Widget.
  This is the root window:</p>
  
  <p><a href="https://i.stack.imgur.com/9udAK.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/9udAK.png" alt="enter image description here"></a></p>
  
  <p>It's comprised of 3 Treeview widgets. The purpose of the application is to give the user the opportunity to sort candidates into the right Treeview widget.
  The issue that I'm facing is that when the Add button is pressed the new data is not shown in the Treeview widget and no errors are given. I think it may be an issue of class instantiation. <strong>This is an excerpt from my app, please see below a Minimal, Complete and Verifiable example</strong></p>
  
  <pre><code>class MainApp(tk.Tk):
      def __init__(self, *args, **kwargs):
          ...
          # frame and menu classes are instantiated here
          self.FrameList = {ViableCandidates: ViableCandidates(self),
                            NotViableCandidates: NotViableCandidates(self),
                            InProgressCandidates: InProgressCandidates(self)}
          ...
      def InstanceLinker(self, frame):
          link = self.FrameList[frame]
          return link
  class GUIMenu(tk.Menu):
      def __init__(self, parent):
          ...
      # menu code is here
      addcandidates.add_command(label='Quick Add', command=lambda: QuickAdd(parent))
  class QuickAdd(tk.Toplevel):
      def __init__(self, parent):
          ...
      # code for the small Toplevel window
      ...
      # this is the code that I use to add the new item to Treeview when the Add button is pressed
      if CandidateInfo['status'] == 'Viable':
          app.InstanceLinker(ViableCandidates).AddtoList()
      elif CandidateInfo['status'] == 'Not Viable':
          app.InstanceLinker(NotViableCandidates).AddtoList()
      else:
          app.InstanceLinker(InProgressCandidates).AddtoList()
  # ViableCandidates, NotViableCandidates, InProgressCandidates are created with the same pattern
  class InProgressCandidates(tk.Frame):
      def __init__(self, parent):
          global Counter
          tk.Frame.__init__(self, parent)
          self.columnconfigure(0, weight=1)
          self.rowconfigure(1, weight=1)
          title = tk.Label(self, text="Candidates In Progress", font="Verdana 10 bold")
          title.grid(row=0, column=0, sticky='nesw')
          self.tree = ttk.Treeview(self)
          self.tree.grid(row=1, column=0, sticky='nesw')
          scrollbar = ttk.Scrollbar(self, orient='vertical', command=self.tree.yview)
          scrollbar.grid(row=1, column=1, sticky='nws')
          self.tree.config(columns=('Name', 'Date'), selectmode='browse', height=20, yscrollcommand=scrollbar.set)
          self.tree.column('#0', width=20, minwidth=10, stretch=tk.YES)
          self.tree.column('Name', width=150, minwidth=10, stretch=tk.YES)
          self.tree.column('Date', width=80, minwidth=10, stretch=tk.YES)
          self.tree.heading('#0', text='#', anchor=tk.W)
          self.tree.heading('Name', text='Name', anchor=tk.W)
          self.tree.heading('Date', text='Date', anchor=tk.W)
          if Counter &lt; 4:
              Counter += 1
              self.PopulateList()
      def PopulateList(self):
          selection = Database().SelectFromDB('name, date', "status = 'In progress'")
          for i in range(len(selection)):
              name = list(selection[i])[0]
              date = adjusttotimezone(list(selection[i])[1])
              self.tree.insert("", i, name, text=i + 1)
              self.tree.set(name, 'Name', name)
              self.tree.set(name, 'Date', date)
              CandidateCounter['InProgressCandidates'] = i
      def AddtoList(self):
          CandidateCounter['InProgressCandidates'] += 1
          print('I was here')
          self.tree.insert("", CandidateCounter['InProgressCandidates'], CandidateInfo['name'],
                           text=CandidateCounter['InProgressCandidates'])
          self.tree.set(CandidateInfo['name'], 'Name', CandidateInfo['name'])
          selection = Database().SelectFromDB('date', "name = '" + CandidateInfo['name'] + "'")
          date = adjusttotimezone(list(selection[0])[0])
          self.tree.set(CandidateInfo['name'], 'Date', date)
  app = MainApp()
  app.mainloop()
  </code></pre>
  
  <p>When the "Add" button is pressed there are no errors and "I was here" is printed so the AddtoList method is instantiated, but there are no new items added to Treeview. I did check if the variables that I'm using to create the new Treeview item hold the correct data and they do.</p>
  
  <p><strong>EDIT: This is a Minimal, Complete and Verifiable example:</strong></p>
  
  <pre><code>import tkinter as tk
  from tkinter import ttk
  Bigbadtext = ''
  Counter = 0
  class MainApp(tk.Tk):
      def __init__(self, *args, **kwargs):
          self.MainWindow = tk.Tk.__init__(self, *args, **kwargs)
          menu = GUIMenu(self)
          self.config(menu=menu)
          frame = InProgressCandidates(self)
          frame.grid(row=0, column=1, sticky='nesw')
          self.FrameList = {InProgressCandidates:InProgressCandidates(self)}
      def InstanceLinker(self, frame):
          link = self.FrameList[frame]
          return link
  class GUIMenu(tk.Menu):
      def __init__(self, parent):
          tk.Menu.__init__(self, parent)
          addcandidates = tk.Menu(self, tearoff=0)
          self.add_cascade(label='Add Candidates', menu=addcandidates)
          addcandidates.add_command(label='Quick Add', command=lambda: QuickAdd(parent))
  class QuickAdd(tk.Toplevel):
      def __init__(self, parent):
          tk.Toplevel.__init__(self, parent)
          saysomething = tk.Entry(self)
          saysomething.grid(row=1, column=0)
          def addbutton():
              global Bigbadtext
              Bigbadtext = saysomething.get()
              app.InstanceLinker(InProgressCandidates).AddtoList()
          okbutton = ttk.Button(self, text='Add', command=addbutton)
          okbutton.grid(row=2, column=0)
  class InProgressCandidates(tk.Frame):
      def __init__(self, parent):
          tk.Frame.__init__(self, parent)
          self.tree = ttk.Treeview(self)
          self.tree.grid(row=1, column=0, sticky='nesw')
          scrollbar = ttk.Scrollbar(self, orient='vertical', command=self.tree.yview)
          scrollbar.grid(row=1, column=1, sticky='nws')
          self.tree.config(columns='something', selectmode='browse', height=20, yscrollcommand=scrollbar.set)
          self.tree.column('#0', width=20, minwidth=10, stretch=tk.YES)
          self.tree.column('something', width=150, minwidth=10, stretch=tk.YES)
          self.tree.heading('#0', text='#', anchor=tk.W)
          self.tree.heading('something', text='Say something', anchor=tk.W)
      def AddtoList(self):
          global Counter
          Counter += 1
          print('I was here')
          self.tree.insert("", Counter, Bigbadtext, text=Counter)
          self.tree.set(Bigbadtext, 'something', Bigbadtext)
  app = MainApp()
  app.mainloop()
  </code></pre>