2

VTKプロジェクトにスクロールバーを追加する最も簡単な方法は何ですか?

ありがとう

アップデート

def vtkSliderCallback2(obj, event):
    sliderRepres = obj.GetRepresentation()
    pos = sliderRepres.GetValue()
    contourFilter.SetValue(0, pos)

SliderRepres = vtk.vtkSliderRepresentation2D()
min = 0 #ImageViewer.GetSliceMin()
max = 256 #ImageViewer.GetSliceMax()
SliderRepres.SetMinimumValue(min)
SliderRepres.SetMaximumValue(max)
SliderRepres.SetValue((min + max) / 2)
SliderRepres.SetTitleText("Slice")
SliderRepres.GetPoint1Coordinate().SetCoordinateSystemToNormalizedDisplay()
SliderRepres.GetPoint1Coordinate().SetValue(0.2, 0.6)
SliderRepres.GetPoint2Coordinate().SetCoordinateSystemToNormalizedDisplay()
SliderRepres.GetPoint2Coordinate().SetValue(0.4, 0.6)

SliderRepres.SetSliderLength(0.02)
SliderRepres.SetSliderWidth(0.03)
SliderRepres.SetEndCapLength(0.01)
SliderRepres.SetEndCapWidth(0.03)
SliderRepres.SetTubeWidth(0.005)
SliderRepres.SetLabelFormat("%3.0lf")
SliderRepres.SetTitleHeight(0.02)
SliderRepres.SetLabelHeight(0.02)

SliderWidget = vtk.vtkSliderWidget()
SliderWidget.SetInteractor(iren)
SliderWidget.SetRepresentation(SliderRepres)
SliderWidget.KeyPressActivationOff()
SliderWidget.SetAnimationModeToAnimate()
SliderWidget.SetEnabled(True)
SliderWidget.AddObserver("InteractionEvent", vtkSliderCallback2)
4

1 に答える 1

1

完全にするために、そして他のユーザーのために物事をグーグルします。

vtkSliderWidgetは、値を設定する必要がある場合に必要な処理を実行します。

//編集に基づいて編集値を取得する場合は、値が変更されたときに発生するスライダーにイベントを接続する必要があります。この値を取得し、それに応じて更新するよりも。C++の例はここにあります

//実際のところ、私の問題は、スライドすると親指の位置ごとにコールバック関数が呼び出されることだと思います。どうすればそれを回避できますか?言い換えれば、コールバック関数をトリガーするのは最後の位置だけです...

インタラクションイベントではなく、EndInteractionEventに結合してみてください。

SliderWidget.AddObserver("EndInteractionEvent", vtkSliderCallback2)

// もの

ちなみに、PythonとVTKを使用していて、GUIのものが必要な場合は、PythonQTウィジェットとpythonqtウィジェットを使用することをお勧めします。これにより、これらのものの多くが簡単になります。GUI+python用にQT+Python + VTKを使用している私の古いプロジェクトの1つのコード:

self.verticalSlider = QtGui.QSlider(self.centralwidget)
self.verticalSlider.setOrientation(QtCore.Qt.Vertical)
self.verticalSlider.setObjectName("verticalSlider")
self.horizontalLayout.addWidget(self.verticalSlider)

// connect slider to a method onValueChange
QObject.connect(self.verticalSlider, SIGNAL("valueChanged(int)"), 
self.setFibreVolumeOpacity)

def setFibreVolumeOpacity(self, value):
    // do stuff here with slider value.
于 2010-10-10T13:24:12.693 に答える