将独立操作系统进程的输出嵌入到 pyqt 小部件中



我正在使用pyqt构建一个GUI程序。作为程序的一部分,我正在使用外部模块(pptk)来可视化非常大的点云。pptk 模块有一个"查看器"类,当调用该类时,它会打开一个查看器,将点云作为独立的操作系统进程进行查看。可以按如下方式调用查看器(安装 pptk 后):

import pptk
v = pptk.viewer(pointCloud)

我的目标是将 pptk 查看器(显示 pointCloud 的窗口)的输出嵌入到 pyqt 小部件中,以便我可以在其周围放置其他 QLabel 等。这将与此类似,除了我没有可以轻松嵌入的.exe文件。我正在使用MacOS,但该解决方案需要跨平台兼容。这可能吗?

No. pptk 查看器是使用 qt 实现的,但当前的实现会打开带有子进程的窗口(在此文件中):

self._process = subprocess.Popen(
[os.path.join(_viewer_dir, 'viewer'), str(s.getsockname()[1])],
stdout=subprocess.PIPE,
stderr=(None if debug else subprocess.PIPE))

并调用程序。

您需要编写自己的包装器(可能使用 SIP 或 Cython)来获取小部件。

最新更新