Как запустить действия Bokeh из меню Electron? - PullRequest
0 голосов
/ 28 апреля 2019

Я хочу подключить приложение Bokeh к Electron. В окне Electron уже отображается localhost:5006 приложения bokeh, написанного на Python 3. Теперь я хочу использовать собственное пользовательское меню электрона для запуска некоторых действий приложения Bokeh. Есть ли способ сделать это?

1 Ответ

0 голосов
/ 30 апреля 2019

Я использовал несколько обходных путей для достижения этого в этом проекте . Конкретно я посылаю сигналы в iframe для запуска некоторых событий js и запуска методов python. Я надеюсь, что в будущем bokeh разрешит некоторые вызовы RPC. Ключевые файлы для получения функциональности:

  1. Я загружаю bokeh в iframe, чтобы контролировать все приложение от электрона.
  2. Я посылаю сигнал в iframe с помощью этим методом .

    document.getElementById('bokeh_iframe').contentWindow.postMessage({
        "signal": "call-python-promise",
        "message_data": message
    } , '*');  // to index.html, the click on the button is run there as well
    

    Один пример вызова здесь . Вы можете разместить эти вызовы в пунктах электронного меню (на стороне рендера ipc).

    var call_params = {
        'object': 'bokeh.loader',
        'method': 'init_bokeh',
        'args': {
            'ts_state': $('body').data('ts_state'),
        }
    }
    tools.call_promise(call_params).then((result) => {
        self.run_on_ready();
    });
    
  3. Этот объект создает механизм для запуска обратных вызовов от js. Небольшая форма боке, построенная с помощью кнопки, ввода текста и графика.

  4. Здесь Я заполняю фиктивный текстовый объект, чтобы выбрать метод для вызова (объект и метод). Затем я запускаю метод python (обратный вызов, связанный с кнопкой) с button.click()
  5. Объект и метод принимаются и вычисляются на стороне питона. Наконец, метод bokeh возвращает ответ электрону с обратным процессом, как я показал здесь .

Как видите, это довольно громоздко. Если вы найдете лучший способ сделать это, дайте мне знать. В будущем будет создан некоторый способ вызова методов python, и все это будет проще.

Примечание : Вам может понадобиться проверить, когда загружается bokeh, чтобы перенаправить электрон. Отметьте вопрос и ответ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...