Skip to content

Commit 3b5bf0e

Browse files
authored
Merge pull request #13 from Kitware/fix-box-widget-listener
docs(widget): update box example listener with corners property
2 parents 1826cc5 + 4325647 commit 3b5bf0e

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

examples/vtk/widgets_box.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from vtkmodules.vtkInteractionStyle import vtkInteractorStyleSwitch # noqa
1010

1111
from vtkmodules.vtkCommonColor import vtkNamedColors
12+
from vtkmodules.vtkCommonTransforms import vtkTransform
1213
from vtkmodules.vtkFiltersSources import vtkConeSource
1314
from vtkmodules.vtkInteractionWidgets import vtkBoxWidget2, vtkBoxRepresentation
1415
from vtkmodules.vtkRenderingCore import (
@@ -28,7 +29,7 @@ def create_vtk_pipeline():
2829
cone.SetResolution(20)
2930
coneMapper = vtkPolyDataMapper()
3031
coneMapper.SetInputConnection(cone.GetOutputPort())
31-
coneActor = vtkActor()
32+
coneActor = vtkActor(user_transform=vtkTransform())
3233
coneActor.SetMapper(coneMapper)
3334
coneActor.GetProperty().SetColor(colors.GetColor3d("BurlyWood"))
3435

@@ -40,7 +41,7 @@ def create_vtk_pipeline():
4041
renderer.SetBackground(colors.GetColor3d("Blue"))
4142
renderer.AddActor(coneActor)
4243

43-
renwin = vtkRenderWindow()
44+
renwin = vtkRenderWindow(off_screen_rendering=True)
4445
renwin.AddRenderer(renderer)
4546

4647
# An interactor
@@ -91,9 +92,11 @@ def _on_widget_update(self, widget_state, **_):
9192
if widget_state is None:
9293
return
9394

94-
print(f"{widget_state=}")
95+
# Get new widget corners from state.
96+
self.widget.representation.corners = widget_state.get("corners")
97+
# Compute user transform for the actor from the new corners.
98+
self.widget.representation.GetTransform(self.actor.user_transform)
9599

96-
self.actor.user_transform.SetMatrix(widget_state.get("transform"))
97100
self.html_view.update_throttle()
98101

99102
def toggle_listeners(self):
@@ -104,10 +107,10 @@ def toggle_listeners(self):
104107
self.widget_id: {
105108
"InteractionEvent": {
106109
"widget_state": {
107-
"transform": (
110+
"corners": (
108111
self.widget_id,
109112
"WidgetRepresentation",
110-
"Transform",
113+
"Corners",
111114
),
112115
}
113116
}
@@ -118,10 +121,10 @@ def one_time_update(self):
118121
self.html_view.eval(
119122
{
120123
"widget_state": {
121-
"transform": (
124+
"corners": (
122125
self.widget_id,
123126
"WidgetRepresentation",
124-
"Transform",
127+
"Corners",
125128
),
126129
}
127130
}
@@ -136,7 +139,7 @@ def _ui(self):
136139
style="position: absolute; left: 1rem; top: 1rem; z-index: 10;",
137140
)
138141
html.Button(
139-
"Update cut",
142+
"Update transformation matrix",
140143
click=self.one_time_update,
141144
style="position: absolute; right: 1rem; top: 1rem; z-index: 10;",
142145
)

0 commit comments

Comments
 (0)