title: Calling a Subform of Startup
body: <pre><code>class MyDialog(wx.Frame):
  
      def __init__(self, parent, title):
          self.no_resize = wx.DEFAULT_FRAME_STYLE &amp; ~ (wx.RESIZE_BORDER | wx.MAXIMIZE_BOX)
  
          wx.Frame.__init__(self, parent, title=title, size=(500, 450),style = self.no_resize)
  
          self.panel = wx.Panel(self, size=(250, 270))
          self.combo = wx.ComboBox(self.panel, -1, pos=(60, 100))
  
          #call settings form here
  
          self.start_read_thread()
          self.Centre()
          self.Show(True)
  
      def read_employees(self,read_file):
          emp_list = []
          with open(read_file) as f_obj:
              for line in f_obj:
                  emp_list.append(line)
          wx.CallAfter(self.combo.Append, emp_list)
  
      def start_read_thread(self):
          filename = 'employees.txt'
          with concurrent.futures.ThreadPoolExecutor(max_workers=1) as executor:
              executor.submit(self.read_employees, filename) 
  
  app = wx.App(False)
  frame = MyDialog(None, "Messaging App")
  app.MainLoop()
  </code></pre>
  
  <p><strong>Problem:</strong></p>
  
  <p>When the program loads for the first time on the users machine, it will open a settings menu that prompts for the e-mail/password. Without filling out the settings menu, the program is of no use, so calling the settings subform and having the user configure it is necessary. In subsequent startups, it will just read the data in from the file.  </p>
  
  <p>Should I call the settings subform from the <code>__init__</code> <code>constructor</code> directly, or another thread and pass the data? I'm still learning threading, but to me, it seems like overkill for a simple subform to gather the data. </p>
  
  <p>Any time afterward, the user can on the settings menu and access that same subform to update the data.</p>