123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- import sys
- from PyQt5 import Qt
- from vtk.qt.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor
- from vedo import Plotter, Image, Text2D, printc
- 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 vedo renderer and add objects and callbacks
- self.plt = Plotter(qt_widget=self.vtkWidget)
- self.cbid = self.plt.add_callback("key press", self.onKeypress)
- self.imgActor = Image("https://icatcare.org/app/uploads/2018/07/Helping-your-new-cat-or-kitten-settle-in-1.png")
- self.text2d = Text2D("Use slider to change contrast")
- self.slider = Qt.QSlider(1)
- self.slider.valueChanged.connect(self.onSlider)
- self.layout.addWidget(self.vtkWidget)
- self.layout.addWidget(self.slider)
- self.frame.setLayout(self.layout)
- self.setCentralWidget(self.frame)
- self.plt.show(self.imgActor, self.text2d, mode='image') # build the vedo rendering
- self.show() # show the Qt Window
- def onSlider(self, value):
- self.imgActor.window(value*10) # change image contrast
- self.text2d.text(f"window level is now: {value*10}")
- self.plt.render()
- def onKeypress(self, evt):
- printc("You have pressed key:", evt.keypress, c='b')
- if evt.keypress=='q':
- self.plt.close()
- self.vtkWidget.close()
- exit()
- def onClose(self):
- self.vtkWidget.close()
- if __name__ == "__main__":
- app = Qt.QApplication(sys.argv)
- window = MainWindow()
- app.aboutToQuit.connect(window.onClose)
- app.exec_()
|