问题标签 [blessed]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1927 浏览

javascript - 受祝福的服务器(Node.js)通过 websocket 到浏览器中的 Xterm.js 客户端

我有的:

  • 运行 Blessed 的 Node.js 脚本和 http/websocket 服务器。
  • 运行 Xterm.js 和 websocket 客户端的浏览器。

我想做的事:

  • 通过 websockets 渲染到 xterm 窗口。

服务器代码:

客户页面:

我遇到的问题是调用 screen.render() 时,客户端上没有显示任何内容。创建我的blessed.screen 时,我尝试使用:

但这也不起作用。在我当前的服务器代码中,我试图欺骗祝福使用connection.send而不是connect.socket.write,因为我认为浏览器websockets只接受'onmessage'事件。像这样:

到目前为止,我所尝试的一切都没有奏效。我在这里做错了什么?或者仅仅是祝福不会与浏览器websockets一起工作。另外,我知道连接正常,因为我可以在两端发送/接收消息。

0 投票
1 回答
167 浏览

node.js - 如何阅读 STDIN 并启动祝福终端应用程序?

我正在构建一个 Node.js 应用程序。我正在尝试读取 STDIN 缓冲区,对其进行解析,然后启动我的祝福程序,但如果我尝试读取 STDIN,我的祝福程序会立即关闭。此外,输入不起作用。

这是一个例子:

创建一些应用程序:

运行程序echo something | node index.js。应用程序正在立即关闭。

0 投票
1 回答
1768 浏览

node.js - node.js - 如何在不阻塞父进程的标准输入的情况下生成子进程?

我正在节点(和blessed.js)中创建一个交互式CLI,每隔几秒就会产生一个子进程来运行一些Python脚本。这些脚本修改 CLI 从中提取的一组 JSON 文件。

问题是 CLI 必须始终能够接受来自用户的输入,并且当这些子进程产生时,stdinCLI/父进程的 似乎被阻塞,看起来 Python 脚本正在前台执行. 这是我用来运行 Python 脚本的代码:

我也尝试将脚本作为后台进程运行,即execPythonScript(["path_to_script.py", "&"]),但无济于事。有任何想法吗?

提前致谢!

更新:

我开始怀疑这是blessedand not的问题child-process,因为我已经用尽了所有相关的方法(及其论点)来生成非阻塞后台进程,但问题仍然存在。

默认情况下,每个blessed实例都process.stdin用于输入,但我认为stdin流可能被子进程用完,即使我将它们stdio设置为“忽略”。所以我尝试使用ttys并实例化blessed.screen从活动终端(/dev/tty)而不是/dev/stdin

但是还是卡住了...

0 投票
1 回答
397 浏览

javascript - 如何使用 Blessed 列表中的搜索选项?

我正在使用 NodeJS 中的祝福应用程序构建终端应用程序。

谁能解释如何使用列表中的搜索选项?

这是我使用的列表对象:

这是我写的听众:

0 投票
1 回答
288 浏览

javascript - 如何在 Blessed 中的表单之间导航?

我已经使用 NodeJS 中的祝福包为终端 UI 应用程序编写了代码,该包包含 2 个表单,比如 form1 和 form2,每个表单中都有一些小部件,如列表和复选框。那么如何使用键盘在表单之间导航呢?

目前我可以用鼠标来做,但我怎么能用键盘做呢?

0 投票
1 回答
493 浏览

python - 如何在 python blessed/blessings/ncurses 中有 2 个“区域”

我想拖尾一个文件,同时提供一个可以按下的键的覆盖。

如何确保数据将立即显示和更新?我希望它不必一直重绘底部的键。我也不想缓冲尾巴,而是立即看到它们。

基本上,底部的几行应该保留给键。

0 投票
1 回答
224 浏览

python - 为什么我的python祝福打印语句不在同一个位置打印?

我正在使用祝福(或祝福)来尝试在 for 循环中的同一位置打印。但是,我发现这仅在我在终端底部上方打印 3 时才有效,但如果我在底部上方打印 1 或两行,它会为每次迭代打印一个新行...

对于 y=term.height-3:

此代码打印:

它对每次迭代都这样做。

但是,如果我将打印位置更改为

with term.location(y=term.height-1):

它这样做

等等等等..这是为什么?

0 投票
2 回答
486 浏览

python - Blessed / Curses 控件不适用于 Pyinstaller。缺少 vtwin10

我有一个非常简单的 Python 程序,它使用“Blessed”。在Win10 Python解释器下运行良好,但与Pyinstaller打包时报错,终端控制代码被忽略。这是代码:

字符串“Hello world”应该以亮绿色显示在控制台上。Pyinstaller 完成时没有错误,当我运行 .exe 时,我收到以下消息:

terminal.py:222: UserWarning: 无法设置term(kind='vtwin10'): 找不到终端vtwin10

然后以默认终端颜色显示“Hello world”。

看起来 Pyinstaller 没有在构建中包含解释器发现没有问题的东西。我在我的 Anaconda3 安装文件夹中找到了一个 vtwin10.py 文件:

C:\Anaconda3\Lib\site-packages\jinxed\terminfo

我查看了祝福库的 terminal.py 文件中的引用错误。这是代码:

所以看起来 self._kind 被设置为'vtwin10'。在 terminal.py 中有一个条件导入,如下所示:

(我明白了。)看起来 jinxed 包正在代码中显式导入,并替换了 curses 包。但不知何故,缺少 vtwin10 定义。

我在 jinxed 中找到了 setupterm() 并深入挖掘以找到该错误消息的来源。它在这段代码中:

这就是我卡住的地方。看起来此代码无法在 jinxed 库中找到 vtwin10.py 文件。有谁知道如何强制 Pyinstaller 包含诅咒的 vtwin10 终端定义?我猜这就是问题所在。

非常感谢。

0 投票
0 回答
84 浏览

javascript - 无法在 onclick 回调中使用流

我试图在单击每个 UI 框时播放音调。我onclick添加到框中的事件不起作用。console.log作品但没有音调。单击ui框时如何播放音调?引用stream仍然存在,我可以在不接收null. 溪流也仍然开放。

0 投票
0 回答
109 浏览

python - 导入 python 的 Blessed 库会导致正则表达式错误?

我想了解 python 的 Blessed 库,也许做一个基于文本的游戏或一些有用的东西。但无论写什么代码,每当我导入祝福时,我都会收到错误报告。

我尝试了各种代码,包括对其他人有用的完整代码示例,但它总是相同的错误。

这是一些简单的代码,因为它似乎并不重要......

这是错误..

我显然已经尝试过谷歌搜索,但没有人发现有这个问题,只是其他我不知道应用于此实例的转义代码错误。我尝试通过这些文件跟踪异常,但它们的内容超出了我的水平(而且我无权更改它们,这是最好的)。

我正在运行 ubuntu 14.04,默认安装了 python 3.7.8 并安装了祝福 1.17.8。

请帮助我确定导致此错误的原因。