首页 > 解决方案 > 如何将终端输出和输入转换为电子应用 gui

问题描述

这是我的代码:

import subprocess

subprocess.call("ssh santiago@192.168.56.101", shell=True)

我正在构建一个 electronjs 应用程序,我想使用 python,因为我更熟悉它。我想要一个页面,该页面具有显示在程序窗口上的交互式终端。我在 python 中创建了一个脚本,它允许您在终端控制台中执行此操作,但是我如何将此代码与电子一起使用来制作一个友好的 gui 终端,您可以像使用其他任何终端一样使用它。

标签: javascriptpythonhtmlnode.jselectron

解决方案


您需要将 python 应用程序作为子进程生成。根据您的BrowserWindow配置,您可能可以直接从渲染器进程执行此操作(使用nodeIntegrationelectron.remote,通常不鼓励使用两者),或者您可能必须使用 IPC 和/或ContextBridge将消息从生成的应用程序传入和传出到BrowserWindow.

您可以像这样生成 python 应用程序:

const spawn = require("child_process").spawn;
const pythonApp = spawn('python', ['path/to/app.py', arg1, arg2, ...]);

pythonApp.stdout.on('data', (data) => {
  // stdout from the python app
});

// stdin to the python app
pythonApp.stdin.write('...')

如果您愿意使用nodeIntegration,那么基本上就是这样,否则您将需要ipcMainipcRenderer和可选的,以增加安全性,ContextBridge


推荐阅读