javascript - 如何将终端输出和输入转换为电子应用 gui
问题描述
这是我的代码:
import subprocess
subprocess.call("ssh santiago@192.168.56.101", shell=True)
我正在构建一个 electronjs 应用程序,我想使用 python,因为我更熟悉它。我想要一个页面,该页面具有显示在程序窗口上的交互式终端。我在 python 中创建了一个脚本,它允许您在终端控制台中执行此操作,但是我如何将此代码与电子一起使用来制作一个友好的 gui 终端,您可以像使用其他任何终端一样使用它。
解决方案
您需要将 python 应用程序作为子进程生成。根据您的BrowserWindow
配置,您可能可以直接从渲染器进程执行此操作(使用nodeIntegration
或electron.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
,那么基本上就是这样,否则您将需要ipcMain、ipcRenderer和可选的,以增加安全性,ContextBridge
推荐阅读
- python - 使用 pandas 对两个数据帧进行多次合并操作
- node.js - 初学者 webrtc/nodejs 连接远程客户端的问题
- angular - Angular Firebase 未获取实时结果,console.log 显示未定义
- python - 如果 sys.stdout.write("\b\b") 在 Jupyter Notebook 中擦除两个字符,为什么 sys.stdout.write("\b\b\b") 只擦除一个字符?
- python - 具有多个输入和多个输出列的 Pandas 应用、滚动、分组
- javascript - 为什么我在javascript中的队列数据结构表现得不应该
- android - Android 如何使用数字创建分页
- tensorflow - 用于 tfjs 的预训练模型策略
- c# - LINQ 为 SQL 提供不同的结果
- android - 无法在 Windows 10 上下载 Android Studio