Reading a file without blocking the main thread
Not much to remark on. Beside some lack of documentation about which thread each function is expected to run in.

You can also do incremental append as you are reading to let the user see you are still doing something in case the file is really massive or slow to read: 

def read_employees(self,read_file):
    emp_list = []
    with open(read_file) as f_obj:
        for line in f_obj:
            emp_list.append(line)
            if len(emp_list) &gt; 5 #adjust as needed
                wx.CallAfter(self.combo.Append, emp_list)
                emp_list = []
    wx.CallAfter(self.combo.Append, emp_list)