threading.Thread() meet error

You should not call GUI code from outside your main thread.
See e.g. here: https://wiki.wxpython.org/LongRunningTasks or http://www.blog.pythonlibrary.org/2010/05/22/wxpython-and-threads/

So you can post events to the main thread which will then update things.

You may also do the update inside an EVT_IDLE handler. Often that’s fast enough.
Then use e.g. standard library collections.deque() to pass data to the main thread.
For controlling the worker thread you may use threading.Event.