Окно Traitsui/pyface не отображается в методе угрозы
Мне нужно отобразить сообщение об ошибке в случае возникновения исключения в запущенном мною потоке. Моя проблема в том, что сообщение не отображается, даже если кажется, что оно каким-то образом создано; главное окно зависает, пока я не нажму Enter, чтобы "отклонить" сообщение об ошибке.
Следующий фрагмент кода - это упрощенная версия моего реального кода, иллюстрирующая проблему.
import threading
from traits.api import *
from traitsui.api import *
from pyface.api import error
class Main(HasTraits):
go=Button("GO")
traits_view = View(Item("go"))
error = Str("")
def _go_fired(self):
thread = threading.Thread(target=self.go_exec)
thread.start()
def go_exec(self):
try:
# here i need to execute some code than can produce an
raise Exception("error")
except Exception as ex:
self.error=ex.args[0]
def _error_changed(self):
error(None, self.error)
m=Main()
m.configure_traits()
В конце я получаю это сообщение
QBasicTimer::start: Timers cannot be started from another thread
QObject: Cannot create children for a parent that is in a different thread.
(Parent is QApplication(0x7ff5ffc03630), parent's thread is QThread(0x7ff5ffe8a7f0), current thread is QThread(0x7ff602034060)
Как я могу "заставить" появиться сообщение?
Спасибо заранее за любую помощь!