Ещё раз убеждаюсь, что на питоне достаточно всё просто и прозрачно. Это ни в коем случае не недостаток, это большой плюс. Хотите сложнее, всё в ваших руках. Вы лично можете прочувствовать код. К примеру, всё можно сделать очень просто, но для более сложных ситуаций необходимо делать хитрее. Для этого и необходимо набираться знаний использования различных паттернов. Дальше описывается паттерн использования событий. В простой ситуации можно обойтийсь объявлением метода-событие в рабочем классе и после инициализации класса, переопределить метод нужным. Да это просто, но это только начало. Событие — это набор функций, которые будут вызваны при вызове события, смотря, на реализацию кода. Смысловая нагрузка заключается в следующем: клиенты подписчики, подписываются на данное событие, к данному событию добавляется метод который должен будет вызываться. При возникновении события, менеджер событий вызывает методы подписчиков, все подписчики стают уведомлеены о происшествии события. Становиться видно из данного кода. Чистый код, лучше длинных статтей.