# VTK do not show image in some situation

**URL:** https://discourse.vtk.org/t/vtk-do-not-show-image-in-some-situation/4814
**Category:** Support
**Created:** [December 13, 2020, 1:52pm UTC](https://discourse.vtk.org/t/vtk-do-not-show-image-in-some-situation/4814 "2020-12-13T13:52:14Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![zhang-qiang-github](https://discourse.vtk.org/user_avatar/discourse.vtk.org/zhang-qiang-github/32/2519_2.png) [@zhang-qiang-github](https://discourse.vtk.org/u/zhang-qiang-github)
#### Post date: [December 13, 2020, 1:52pm UTC](https://discourse.vtk.org/t/vtk-do-not-show-image-in-some-situation/4814/1 "2020-12-13T13:52:14Z")

</div>

I am using VTK im my project. In some situations, vtk do not show image and it really make me confuzed.

Firstly, the following code work:

```auto
import vtk, sys
from vtk.qt.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class MainWindow(QWidget):

    def __init__ (self, parent=None):
        super(MainWindow, self). __init__ (parent=parent)

        self.vl = QVBoxLayout()
        self.setLayout(self.vl)
        self.vtkWidget = QVTKRenderWindowInteractor()
        self.vl.addWidget(self.vtkWidget)

        img = vtk.vtkDICOMImageReader()
        img.SetFileName('C:\\Users\\MLoong\\Desktop\\dicom_data\\Chang Cheng\\TOF\\IM_0174')
        img.Update()

        windowLevel = vtk.vtkImageMapToWindowLevelColors()
        windowLevel.SetInputData(img.GetOutput())
        windowLevel.Update()

        actor = vtk.vtkImageActor()
        actor.GetMapper().SetInputConnection(windowLevel.GetOutputPort())

        self.ren = vtk.vtkRenderer()
        self.ren.AddActor(actor)
        self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
        self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()
        self.iren.RemoveAllObservers()

        self.vtkWidget.GetRenderWindow().Render()

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

```

And the result is:  
 ![image](https://discourse.vtk.org/uploads/default/original/2X/a/a810e0ede4631f4bd5c3b4c22d10727e0de7be56.png)

Because the reality project is not a demo. In the reality project, I need to firstly build the pipeline, like:

```auto
self.ren = vtk.vtkRenderer()
self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()

```

Then, for example, the user will click a button, and the program will show a image. Thus, I modify the above code as following:

```auto
import vtk, sys

from vtk.qt.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor

from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
class MainWindow(QWidget):

    def __init__ (self, parent=None):
        super(MainWindow, self). __init__ (parent=parent)

        self.vl = QVBoxLayout()
        self.setLayout(self.vl)
        self.vtkWidget = QVTKRenderWindowInteractor()
        self.vl.addWidget(self.vtkWidget)

        self.ren = vtk.vtkRenderer()
        # self.ren.AddActor(actor)
        self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
        self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()
        self.iren.RemoveAllObservers()

        self.vtkWidget.GetRenderWindow().Render() ############# the flag code

        img = vtk.vtkDICOMImageReader() ######## move these code to the last
        img.SetFileName('C:\\Users\\MLoong\\Desktop\\dicom_data\\Chang Cheng\\TOF\\IM_0174')
        img.Update()

        windowLevel = vtk.vtkImageMapToWindowLevelColors()
        windowLevel.SetInputData(img.GetOutput())
        windowLevel.Update()

        actor = vtk.vtkImageActor()
        actor.GetMapper().SetInputConnection(windowLevel.GetOutputPort())
        self.ren.AddActor(actor)
        self.vtkWidget.GetRenderWindow().Render()

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

```

What I do is move some code from middle to the last. The result of the above code is:  
 ![image](https://discourse.vtk.org/uploads/default/original/2X/4/42468b79275307e373b7603d97383d9bc01f4496.png)

After long time debug, I find what make it wrong.

```auto
self.vtkWidget.GetRenderWindow().Render() ############# the flag code

```

This code should be removed. If I remove it, the result is OK. But I don’t know why it make this bug.

In addition, I find one code will also cause the same bug:

```auto
        self.iren = self.vtkWidget.GetRenderWindow().GetInteractor()
        self.iren.Initialize()
        self.iren.RemoveAllObservers()

```

Just add `iren.Initialize()`. And I also don’t know why.

The thing I want to know most is that how should I debug for these situations?

Any suggestion is appreciated!
