Использование TraitsUI ShellEditor для получения уведомлений до и после того, как пользователь нажмет клавишу ввода.
Я работаю над многопоточным приложением и использую ShellEditor для создания встроенного терминала Python.
Мне нужно получить уведомление до и после выполнения команды во встроенной оболочке, чтобы я мог получить и снять блокировку потоков.
Я настраиваю свой ShellEditor, как показано ниже. Может ли кто-нибудь придумать способ, как заставить это работать?
ShellEditor(share=False, command_executed="did_execute_command", command_to_execute="will_execute_command")
Уведомление Command_executed работает, но я никогда не вижу вызова Command_to_execute.
Вот полный пример, демонстрирующий проблемы с трейтсуи 8.0.0.
from traits.api import HasTraits, Dict, Event, observe
from traitsui.api import View, Item, ShellEditor
class PythonShellExample(HasTraits):
shared = Dict({"msg": "Hello world"})
will_execute_command = Event(False)
did_execute_command = Event(False)
# NEVER CALLED
@observe("will_execute_command")
def on_will_execute_command_changed(self, event):
print(event)
@observe("did_execute_command")
def on_did_execute_command_changed(self, event):
print(event)
def default_traits_view(self):
return View(
Item(
"shared",
editor=ShellEditor(
share=False, command_executed="did_execute_command", command_to_execute="will_execute_command"
),
label="Shell",
show_label=False,
),
)
if __name__ == "__main__":
app = PythonShellExample()
app.configure_traits()