JavaFX 显示循环 Python 打印输出

加布·穆科比

我用 FXML 在 JavaFX 中构建了一个 GUI,用于运行一堆不同的 Python 脚本。Python 脚本不断从设备收集数据并将其打印到控制台,因为它以大约 10 到 70 Hz 的频率循环收集,具体取决于正在运行的脚本,并且它们不会自行停止。

我希望最终用户能够单击我的 GUI 上的按钮来启动脚本并让他们看到输出。目前,使用我已经做了最好是Runtime.exec()用命令"cmd /c start cmd /k python some_script.py"这将打开Windows命令提示符,运行python some_script.py它,并保持命令提示符打开,以便您可以看到输出。问题在于它只适用于 Windows(我的操作系统),但我需要有通用的操作系统支持,并且它依赖于 Java 启动一个我听说不是很优雅的外部程序。

然后我尝试通过python some_script.py在 Java 中执行命令来解决这个问题,使用 捕获进程输出BufferedReader,在 AnchorPane 中创建一个只有 TextArea 的新 JavaFX 场景作为伪 Java 控制台,然后调用.setText()该 TextArea 来放置脚本输出在里面。

这有点奏效,但我遇到了很多问题,因为写入 JavaFX 控制台会跳成几十行的大块,而不是在 Python 代码Print()调用时逐行写入另外,我得到了一堆NullPointerException而且ArrayIndexOutOfBoundsException有点随机,因为 Java 会正确编写几百行,但随后抛出这些错误并冻结程序。我很确定这两个问题都是由于在如此高的数据速率下有如此多的数据溢出BufferedReader缓冲区和/或TextArea.setText()缓存或类似的东西。

我想知道的是我应该采取什么方法。我无法将 Python 代码迁移到 Java,因为它依赖于其他人的 Python 库来收集其数据。我应该尝试保持伪 Java 控制台的想法,看看我是否可以做到这一点?我应该回到从 Java 打开命令提示符窗口并运行 Python 脚本,然后添加对在 Mac 和 Linux 中使用终端执行相同操作的支持吗?有没有我没有想到的更好的方法?让 Java 代码调用 Python 代码并处理其输出的想法是否令人厌恶和可怕?

如果您想查看任何代码(有很多)或者我是否可以澄清任何内容,请告诉我,我会尽力快速回复。谢谢!

加布·穆科比

我的解决方案是仍然从 Java Processbuilder 调用 Python 代码,但使用-upython -u scriptname.py指定无缓冲 Python 输出这样选项

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我对python while循环中的打印输出感到困惑

来自分类Dev

Python Selenium文本字段的打印输出值显示为空。该值不打印

来自分类Dev

如何在python的for循环中打印输出之前设置标题?

来自分类Dev

Python 通过循环将打印输出重定向到文件

来自分类Dev

如何在python中的循环中打印图像名称并将所有打印输出到excel

来自分类Dev

Java嵌套循环打印输出

来自分类Dev

Java嵌套循环打印输出

来自分类Dev

打印输出未显示正确格式

来自分类Dev

Python用户输入和打印输出

来自分类Dev

Python捕获所有打印输出

来自分类Dev

在csv文件python中打印输出

来自分类Dev

Python Unittest shortDescription打印输出无

来自分类Dev

Python 函数返回的奇怪打印输出

来自分类Dev

如果R中存在for循环中的值,则打印输出

来自分类Dev

打印输出看起来在长循环中拉伸

来自分类Dev

VS代码以TERMINAL(而不是OUTPUT)显示打印输出

来自分类Dev

在文本框中显示打印输出

来自分类Dev

显示弹出窗口的ArcGIS Java Web地图打印输出

来自分类Dev

LCD 在打印输出上显示 'b

来自分类Dev

显示 RAW 打印输出的表格视图 - Django

来自分类Dev

增强Python cmd模块“帮助”打印输出

来自分类Dev

关于python __iter__和next()打印输出的说明

来自分类Dev

在Python中将打印输出重定向到.txt文件

来自分类Dev

Ubuntu Python3双重打印输出

来自分类Dev

Cplex Python API中间LB和UB打印输出

来自分类Dev

获得多余的行Python打印输出?

来自分类Dev

python字符串格式的意外打印输出

来自分类Dev

Python 3从打印输出创建目录名称

来自分类Dev

Python,将打印输出附加到excel文件

Related 相关文章

热门标签

归档