Использование 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()

0 ответов

Другие вопросы по тегам