wxPython: Threading GUI -> Использование пользовательского обработчика событий

Я пытаюсь узнать, как запустить поток из основного приложения с графическим интерфейсом, чтобы выполнять отправку / получение моего последовательного порта при сохранении моего графического интерфейса. Мои лучшие попытки поиска Google привели меня в wxpython вики на:http://wiki.wxpython.org/LongRunningTasks который предоставляет несколько примеров. Я остановился на изучении первого примера, включающего запуск рабочего потока, когда выбрана конкретная кнопка.

У меня проблемы с пониманием пользовательского определения события:

def EVT_RESULT(win, func):
    """Define Result Event."""
    win.Connect(-1, -1, EVT_RESULT_ID, func)

class ResultEvent(wx.PyEvent):
    """Simple event to carry arbitrary result data."""
    def __init__(self, data):
        """Init Result Event."""
        wx.PyEvent.__init__(self)
        self.SetEventType(EVT_RESULT_ID)
        self.data = data

Прежде всего

def EVT_RESULT(win, func):
    """Define Result Event."""
    win.Connect(-1, -1, EVT_RESULT_ID, func)

Я думаю, что EVT_RESULT размещен вне классов, чтобы сделать его доступным для вызова обоими классами (делая его глобальным?)

И ... основное приложение с графическим интерфейсом контролирует продвижение потока через:

# Set up event handler for any worker thread results
EVT_RESULT(self,self.OnResult)

Я также заметил, что во многих примерах, когда автор использует

from wx import *

они просто связывают вещи

EVT_SOME_NEW_EVENT(self, self.handler)

в отличие от

wx.Bind(EVT_SOME_NEW_EVENT, self.handler)

Что не помогает мне понять это быстрее. Спасибо,