LoginSignup
2
3

pyvistaのplotterをpyqtのウィンドウに埋め込む

pyvistaqtを使ってpyqtのwidgetとして扱える。
BackgroundPlotter().interactorがwidget。

from pyvistaqt import BackgroundPlotter

self.plotter = BackgroundPlotter()
self.plotter.setWindowTitle('3D Visualization')
self.plotter.add_mesh(pv.Sphere()) 
self.pyvistaWidget = self.plotter.interactor

pyqtのwidgetとして扱えるので、他のwidgetと並べて表示できる。

スクリーンショット 2024-02-04 10.03.48.png

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QHBoxLayout
from PyQt5.QtGui import QPixmap
from pyvistaqt import BackgroundPlotter
import pyvista as pv

class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        
        # レイアウトの設定
        layout = QHBoxLayout()
        
        # 画像ウィジェットの設定
        self.image_label = QLabel()
        self.pixmap = QPixmap("myPhoto.jpg")
        self.scaledPixmap = self.pixmap.scaled(self.image_label.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation)

        self.image_label.setPixmap(self.scaledPixmap)  # 画像のパスを設定
        layout.addWidget(self.image_label)
        
        # PyVistaQtのBackgroundPlotter設定
        self.plotter = BackgroundPlotter()
        self.plotter.setWindowTitle('3D Visualization')
        self.plotter.add_mesh(pv.Sphere())  # 球を追加
        self.pyvistaWidget = self.plotter.interactor
        # PyVistaウィジェットをレイアウトに追加
        layout.addWidget(self.pyvistaWidget)
        
        # メインウィンドウにレイアウトを設定
        self.setLayout(layout)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

🐣


フリーランスエンジニアです。
AIについて色々記事を書いていますのでよかったらプロフィールを見てみてください。

もし以下のようなご要望をお持ちでしたらお気軽にご相談ください。
AIサービスを開発したい、ビジネスにAIを組み込んで効率化したい、AIを使ったスマホアプリを開発したい、
ARを使ったアプリケーションを作りたい、スマホアプリを作りたいけどどこに相談したらいいかわからない…

いずれも中間コストを省いたリーズナブルな価格でお請けできます。

お仕事のご相談はこちらまで
rockyshikoku@gmail.com

機械学習やAR技術を使ったアプリケーションを作っています。
機械学習/AR関連の情報を発信しています。

X
Medium
GitHub

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3