8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

在 QML 中嵌入 VTK/Vedo(PyQT5)

Nidhin Paul 2月前

14 0

我正在尝试创建一个 qt vedo 应用程序,使用 QML 进行 UI 设计。但当我运行它时,按钮显示出来,但 vedo 绘图仪却没有显示。我只找到了使用帧缓冲区对象的 C++ 示例,但

我正在尝试创建一个 qt vedo 应用程序,使用 QML 进行 UI 设计。但是当我运行它时,按钮会显示,但 vedo 绘图仪不会显示。我只在 C++ 中找到了使用帧缓冲区对象的示例,但在 python 中没有找到。我对此完全陌生,因此非常感激任何能给我的帮助。目前使用 PyQT5.15.11 和 VTK 9.3.1。

主程序

from PyQt5.QtCore    import QUrl
from PyQt5.QtQml     import qmlRegisterType, QQmlApplicationEngine
from PyQt5.QtWidgets import QApplication, QVBoxLayout, QWidget

from vedo                                     import Mesh, Plotter
from vtk                                      import *
from vtkmodules.qt.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor

import sys


class VedoWidget(QWidget):

    def __init__(self, parent=None):

        # Call super class constructor
        super().__init__(parent)

        
        # Set up layout
        self.layout = QVBoxLayout()
        self.setLayout(self.layout)

        # Set up VTK widget
        self.vtkWidget = QVTKRenderWindowInteractor(self)
        self.layout.addWidget(self.vtkWidget)

        # Initialize Vedo plotter
        self.plt = Plotter(qt_widget=self.vtkWidget, bg="white")

        # Load a sample mesh
        self.mesh = Mesh("assets/head.stl").c("lightgray")
        self.plt.add(self.mesh)

        # Show the VTK render window
        self.vtkWidget.GetRenderWindow().AddRenderer(self.plt.renderer)
        self.vtkWidget.GetRenderWindow().Render()
        self.vtkWidget.GetRenderWindow().GetInteractor().Start()


if __name__ == "__main__":

    # Create Qt application
    app = QApplication(sys.argv)

    # Create QML engine
    engine = QQmlApplicationEngine()

    # Register custom QML types
    qmlRegisterType(VedoWidget, 'QtVTK', 1, 0, 'VedoWidget')

    # Load main QML file
    engine.load(QUrl('resources/main.qml'))

    # Validate QML file loaded successfully
    if not engine.rootObjects():
        sys.exit(-1)

    # Exit program gracefully
    sys.exit(app.exec_())

主.qml

import QtQuick.Controls 2.15
import QtVTK 1.0

ApplicationWindow {
    visible: true
    width: 800
    height: 600

    Rectangle {
        width: 800
        height: 600

        VedoWidget
        {
        }
    }

    Button {
        text: "Click Me"
        anchors.centerIn: parent
    }
}

帖子版权声明 1、本帖标题:在 QML 中嵌入 VTK/Vedo(PyQT5)
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Nidhin Paul在本站《python》版块原创发布, 转载请注明出处!
最新回复 (0)
返回
作者最近主题: