qt_window2.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import sys
  2. from PyQt5 import Qt
  3. from vtk.qt.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor
  4. from vedo import Plotter, Image, Text2D, printc
  5. class MainWindow(Qt.QMainWindow):
  6. def __init__(self, parent=None):
  7. Qt.QMainWindow.__init__(self, parent)
  8. self.frame = Qt.QFrame()
  9. self.layout = Qt.QVBoxLayout()
  10. self.vtkWidget = QVTKRenderWindowInteractor(self.frame)
  11. # Create vedo renderer and add objects and callbacks
  12. self.plt = Plotter(qt_widget=self.vtkWidget)
  13. self.cbid = self.plt.add_callback("key press", self.onKeypress)
  14. self.imgActor = Image("https://icatcare.org/app/uploads/2018/07/Helping-your-new-cat-or-kitten-settle-in-1.png")
  15. self.text2d = Text2D("Use slider to change contrast")
  16. self.slider = Qt.QSlider(1)
  17. self.slider.valueChanged.connect(self.onSlider)
  18. self.layout.addWidget(self.vtkWidget)
  19. self.layout.addWidget(self.slider)
  20. self.frame.setLayout(self.layout)
  21. self.setCentralWidget(self.frame)
  22. self.plt.show(self.imgActor, self.text2d, mode='image') # build the vedo rendering
  23. self.show() # show the Qt Window
  24. def onSlider(self, value):
  25. self.imgActor.window(value*10) # change image contrast
  26. self.text2d.text(f"window level is now: {value*10}")
  27. self.plt.render()
  28. def onKeypress(self, evt):
  29. printc("You have pressed key:", evt.keypress, c='b')
  30. if evt.keypress=='q':
  31. self.plt.close()
  32. self.vtkWidget.close()
  33. exit()
  34. def onClose(self):
  35. self.vtkWidget.close()
  36. if __name__ == "__main__":
  37. app = Qt.QApplication(sys.argv)
  38. window = MainWindow()
  39. app.aboutToQuit.connect(window.onClose)
  40. app.exec_()