123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import sys
- from PyQt5 import Qt
- from vtk.qt.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor
- from vedo import Plotter, Cone, printc, settings
- class MainWindow(Qt.QMainWindow):
-
- def __init__(self, parent=None):
- Qt.QMainWindow.__init__(self, parent)
- self.frame = Qt.QFrame()
- self.layout = Qt.QVBoxLayout()
- self.vtkWidget = QVTKRenderWindowInteractor(self.frame)
- # Create renderer and add the vedo objects and callbacks
- self.plt = Plotter(qt_widget=self.vtkWidget)
- self.plt += Cone().rotate_x(20)
- self.button = self.plt.add_button(
- self.buttonfunc,
- pos=(0.7, 0.05), # x,y fraction from bottom left corner
- states=["click to green"], # text for each state
- c=["w"], # font color for each state
- bc=["dg"], # background color for each state
- font="courier", # font type
- size=25, # font size
- bold=True, # bold font
- italic=False, # non-italic font style
- )
- self.plt.show() # <--- show the vedo rendering
- # Set-up the rest of the Qt window
- button = Qt.QPushButton("My Button makes the cone red")
- button.setToolTip("This is an example button")
- button.clicked.connect(self.onClick)
- self.layout.addWidget(self.vtkWidget)
- self.layout.addWidget(button)
- self.frame.setLayout(self.layout)
- self.setCentralWidget(self.frame)
- self.show() # <--- show the Qt Window
- def buttonfunc(self, obj, ename):
- print("btn is clicked...")
- self.plt.objects[0].color("green5").rotate_z(40)
-
- @Qt.pyqtSlot()
- def onClick(self):
- printc("..calling onClick")
- self.plt.objects[0].color("red5").rotate_z(40)
- self.plt.render()
- if __name__ == "__main__":
- if settings.dry_run_mode:
- sys.exit()
- app = Qt.QApplication(sys.argv)
- window = MainWindow()
- app.exec_()
|