Esempio n. 1
0
    def BuildGUI(self):
        SlicerVMTKAdvancedPageSkeleton.BuildGUI(self)

        self._firstRowFrame.SetParent(self._parentFrame)
        self._firstRowFrame.Create()

        self._secondRowFrame.SetParent(self._parentFrame)
        self._secondRowFrame.Create()

        self._thresholdFrame.SetParent(self._parentFrame)
        self._thresholdFrame.Create()
     

        self._thresholdSlider.SetParent(self._thresholdFrame.GetFrame())
        self._thresholdSlider.Create()


        self._startButton.SetParent(self._parentFrame)
        self._startButton.Create()


        self._resetButton.SetParent(self._parentFrame)
        self._resetButton.Create()

        self.UpdateGUIByState()

        slicer.TkCall("pack %s -side top -expand y -padx 2 -pady 2 -in %s" % (self._firstRowFrame.GetWidgetName(), self._parentFrame.GetWidgetName()))
        slicer.TkCall("pack %s -side top -expand y -padx 2 -pady 2 -in %s" % (self._secondRowFrame.GetWidgetName(), self._parentFrame.GetWidgetName()))

        slicer.TkCall("pack %s -side right -expand n -padx 2 -pady 2 -in %s" % (self._startButton.GetWidgetName(), self._parentFrame.GetWidgetName()))
        slicer.TkCall("pack %s -side right -expand n -padx 2 -pady 2 -in %s" % (self._resetButton.GetWidgetName(), self._parentFrame.GetWidgetName()))
        
        slicer.TkCall("pack %s -side left -expand y -padx 2 -pady 2 -in %s" % (self._thresholdFrame.GetWidgetName(), self._secondRowFrame.GetWidgetName()))
        slicer.TkCall("pack %s -side top -expand n -padx 2 -pady 2" % (self._thresholdSlider.GetWidgetName()))
    def BuildGUI(self):
        SlicerVMTKAdvancedPageSkeleton.BuildGUI(self)


        self._welcomeMessage.SetParent(self._parentFrame)
        self._welcomeMessage.Create()
        self._welcomeMessage.GetWidget().SetWrapToWord()
        self._welcomeMessage.GetWidget().SetHeight(15)
        self._welcomeMessage.GetWidget().QuickFormattingOn()
        self._welcomeMessage.SetHorizontalScrollbarVisibility(0)
        self._welcomeMessage.SetVerticalScrollbarVisibility(1)
        self._welcomeMessage.SetText("**Level-Set Segmentation using VMTK** (<a>http://www.vmtk.org</a>):\n\n\nThe following initialization methods exist:\n\n**Colliding Fronts**: very effective when it is necessary to initialize the tract of a vessel, side branches will be ignored.\n\n**Fast Marching**: effective when it is necessary to segment round objects such as aneurysms. For example, by simply placing one seed at the center and one target on the wall, the volume will be initialized.\n\n**Threshold**: pixels comprised within two specified thresholds will be selected as the initial level sets.\n\n**Isosurface**: initial level sets will correspond to an isosurface of the image with sub-pixel precision.\n\n**Seeds**: initial deformable model is chosen by placing seeds.")
        self._welcomeMessage.GetWidget().ReadOnlyOn()


        slicer.TkCall("pack %s -side top -anchor nw -fill x -padx 2 -pady 2 -in %s" % (self._welcomeMessage.GetWidgetName(),self._parentFrame.GetWidgetName()))
Esempio n. 3
0
    def BuildGUI(self):
        SlicerVMTKAdvancedPageSkeleton.BuildGUI(self)

        self._welcomeMessage.SetParent(self._parentFrame)
        self._welcomeMessage.Create()
        self._welcomeMessage.GetWidget().SetWrapToWord()
        self._welcomeMessage.GetWidget().SetHeight(15)
        self._welcomeMessage.GetWidget().QuickFormattingOn()
        self._welcomeMessage.SetHorizontalScrollbarVisibility(0)
        self._welcomeMessage.SetVerticalScrollbarVisibility(1)
        self._welcomeMessage.SetText(
            "**Level-Set Segmentation using VMTK** (<a>http://www.vmtk.org</a>):\n\n\nThe following evolution methods exist:\n\n**Geodesic**: evolution using the geodesic active contour filter\n\n**Curves**: evolution using the curves image filter\n\n**Parameters**:\n**Number of iterations** is the number of deformation steps the model will perform.\n\n**Propagation scaling** is the weight you assign to model inflation.\n\n**Curvature scaling** is the weight you assign to model surface regularization\n\n**Advection scaling** regulates the attraction of the surface of the image gradient modulus ridges"
        )
        self._welcomeMessage.GetWidget().ReadOnlyOn()

        slicer.TkCall(
            "pack %s -side top -anchor nw -fill x -padx 2 -pady 2 -in %s" %
            (self._welcomeMessage.GetWidgetName(),
             self._parentFrame.GetWidgetName()))
    def BuildGUI(self):
        SlicerVMTKAdvancedPageSkeleton.BuildGUI(self)


        
        self._spinboxFrame.SetParent(self._parentFrame)
        self._spinboxFrame.Create()
        self._spinboxFrame.AllowFrameToCollapseOff()
        self._spinboxFrame.SetLabelText("Tubular structure detection:")
        self._spinboxFrame.SetReliefToSunken()    

        slicer.TkCall("pack %s -side top -expand y -padx 2 -pady 10 -in %s" % (self._spinboxFrame.GetWidgetName(), self._parentFrame.GetWidgetName()))
        
        self._numberOfSigmaSteps.SetParent(self._spinboxFrame.GetFrame())
        self._numberOfSigmaSteps.Create()
        self._numberOfSigmaSteps.SetRange(0.0,2000.0)
        self._numberOfSigmaSteps.ClampMinimumValueOn()
        self._numberOfSigmaSteps.ClampMaximumValueOn()
        self._numberOfSigmaSteps.ClampResolutionOn()
        self._numberOfSigmaSteps.SetThumbWheelHeight(10)
        self._numberOfSigmaSteps.SetResolution(1.0)
        self._numberOfSigmaSteps.SetLength(150)
        self._numberOfSigmaSteps.DisplayEntryOn()
        self._numberOfSigmaSteps.DisplayLabelOn()
        self._numberOfSigmaSteps.GetLabel().SetText("Steps between min. and max. Diameter")
        self._numberOfSigmaSteps.SetBalloonHelpString("The discretization rate between min. and max. Diameter")

        slicer.TkCall("pack %s -side top -expand y -padx 2 -pady 10" % self._numberOfSigmaSteps.GetWidgetName())

        self._sigmaUnit.SetParent(self._spinboxFrame.GetFrame())
        self._sigmaUnit.Create()
        self._sigmaUnit.SetLabelText("Diameter specification")
        v = self._sigmaUnit.GetWidget().AddWidget(0)
        v.SetText("Physical Unit (e.g. [mm])")
        v = self._sigmaUnit.GetWidget().AddWidget(1)
        v.SetText("Voxel")

        self._sigmaUnit.GetWidget().GetWidget(0).SetSelectedState(1)

        slicer.TkCall("pack %s -side top -anchor w -expand y -padx 2 -pady 2" % self._sigmaUnit.GetWidgetName())

        self._sigmaMin.SetParent(self._spinboxFrame.GetFrame())
        self._sigmaMin.Create()
        self._sigmaMin.GetWidget().SetRange(0.0,100.0)
        self._sigmaMin.GetWidget().SetIncrement(0.1)
        self._sigmaMin.GetWidget().SetWidth(5)
        self._sigmaMin.GetWidget().SetValueFormat("%.1f")
        self._sigmaMin.SetLabelText("Min. Diameter of the Tube:")
        self._sigmaMin.SetBalloonHelpString("Select the minimal diameter of tubes to enhance.")

        slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._sigmaMin.GetWidgetName())
        
        self._sigmaMax.SetParent(self._spinboxFrame.GetFrame())
        self._sigmaMax.Create()
        self._sigmaMax.GetWidget().SetRange(0.0,100.0)
        self._sigmaMax.GetWidget().SetIncrement(0.1)
        self._sigmaMax.GetWidget().SetWidth(5)
        self._sigmaMax.GetWidget().SetValueFormat("%.1f")
        self._sigmaMax.SetLabelText("Max. Diameter of the Tube:")
        self._sigmaMax.SetBalloonHelpString("Select the maximal diameter of tubes to enhance.")

        slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._sigmaMax.GetWidgetName())

        self._thrFrame.SetParent(self._parentFrame)
        self._thrFrame.Create()
        self._thrFrame.AllowFrameToCollapseOff()
        self._thrFrame.SetLabelText("Sensitivity Thresholds:")
        self._thrFrame.SetReliefToSunken()    

        slicer.TkCall("pack %s -side top -expand y -padx 2 -pady 10 -in %s" % (self._thrFrame.GetWidgetName(), self._parentFrame.GetWidgetName()))
        

        self._alpha.SetParent(self._thrFrame.GetFrame())
        self._alpha.Create()
        self._alpha.GetWidget().SetRange(0.0,100.0)
        self._alpha.GetWidget().SetIncrement(0.1)
        self._alpha.GetWidget().SetWidth(5)
        self._alpha.GetWidget().SetValueFormat("%.1f")
        self._alpha.SetLabelText("Plate-like and line-like structures:")
        self._alpha.SetBalloonHelpString("This controls the sensitivity for plate-like and line-like structures.")

        slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._alpha.GetWidgetName())


        self._alpha2.SetParent(self._thrFrame.GetFrame())
        self._alpha2.Create()
        self._alpha2.GetWidget().SetRange(0.0,100.0)
        self._alpha2.GetWidget().SetIncrement(0.1)
        self._alpha2.GetWidget().SetWidth(5)
        self._alpha2.GetWidget().SetValueFormat("%.1f")
        self._alpha2.SetLabelText("Blob-like structures:")
        self._alpha2.SetBalloonHelpString("This controls the sensitivity for blob-like structures.")

        slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._alpha2.GetWidgetName())

        self._startButton.SetParent(self._parentFrame)
        self._startButton.Create()
        self._startButton.SetText("Start!")
        self._startButton.SetWidth(8)
        self._startButton.SetBalloonHelpString("Click to start")

        slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._startButton.GetWidgetName())

        self.Reset()
    def BuildGUI(self):
        SlicerVMTKAdvancedPageSkeleton.BuildGUI(self)

        self._iterationsThumbwheel.SetParent(self._parentFrame)
        self._iterationsThumbwheel.Create()
        self._iterationsThumbwheel.SetRange(0.0,2000.0)
        self._iterationsThumbwheel.ClampMinimumValueOn()
        self._iterationsThumbwheel.ClampMaximumValueOn()
        self._iterationsThumbwheel.ClampResolutionOn()
        self._iterationsThumbwheel.SetThumbWheelHeight(10)
        self._iterationsThumbwheel.SetResolution(1.0)
        self._iterationsThumbwheel.SetLength(150)
        self._iterationsThumbwheel.DisplayEntryOn()
        self._iterationsThumbwheel.DisplayLabelOn()
        #self._iterationsThumbwheel.DisplayEntryAndLabelOnTopOff()
        self._iterationsThumbwheel.GetLabel().SetText("Number of iterations")

        slicer.TkCall("pack %s -side top -expand y -padx 2 -pady 10" % self._iterationsThumbwheel.GetWidgetName())
        
        self._weightsFrame.SetParent(self._parentFrame)
        self._weightsFrame.Create()
        self._weightsFrame.AllowFrameToCollapseOff()
        self._weightsFrame.SetLabelText("Scaling weights:")
        self._weightsFrame.SetReliefToSunken()    

        slicer.TkCall("pack %s -side top -expand y -padx 2 -pady 10 -in %s" % (self._weightsFrame.GetWidgetName(), self._parentFrame.GetWidgetName()))
        
        self._propagationScalingSpinBox.SetParent(self._weightsFrame.GetFrame())
        self._propagationScalingSpinBox.Create()
        self._propagationScalingSpinBox.GetWidget().SetRange(0.0,10.0)
        self._propagationScalingSpinBox.GetWidget().SetIncrement(0.1)
        self._propagationScalingSpinBox.GetWidget().SetWidth(5)
        self._propagationScalingSpinBox.GetWidget().SetValueFormat("%.1f")
        self._propagationScalingSpinBox.SetLabelText("Propagation scaling:")
        self._propagationScalingSpinBox.SetBalloonHelpString("Propagation scaling is the weight you assign to model inflation.")

        slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._propagationScalingSpinBox.GetWidgetName())
        
        self._curvatureScalingSpinBox.SetParent(self._weightsFrame.GetFrame())
        self._curvatureScalingSpinBox.Create()
        self._curvatureScalingSpinBox.GetWidget().SetRange(0.0,10.0)
        self._curvatureScalingSpinBox.GetWidget().SetIncrement(0.1)
        self._curvatureScalingSpinBox.GetWidget().SetWidth(5)
        self._curvatureScalingSpinBox.GetWidget().SetValueFormat("%.1f")
        self._curvatureScalingSpinBox.SetLabelText("Curvature scaling:")
        self._curvatureScalingSpinBox.SetBalloonHelpString("Curvature scaling is the weight you assign to model surface regularization (this will eventually make the model collapse and vanish if it's too strong)")

        slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._curvatureScalingSpinBox.GetWidgetName())

        self._advectionScalingSpinBox.SetParent(self._weightsFrame.GetFrame())
        self._advectionScalingSpinBox.Create()
        self._advectionScalingSpinBox.GetWidget().SetRange(0.0,10.0)
        self._advectionScalingSpinBox.GetWidget().SetIncrement(0.1)
        self._advectionScalingSpinBox.GetWidget().SetWidth(5)
        self._advectionScalingSpinBox.GetWidget().SetValueFormat("%.1f")
        self._advectionScalingSpinBox.SetLabelText("Advection scaling:")
        self._advectionScalingSpinBox.SetBalloonHelpString("Advection scaling is the most important weight. It regulates the attraction of the surface of the image gradient modulus ridges, which is ultimately what you want.")

        slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._advectionScalingSpinBox.GetWidgetName())

        self._startButton.SetParent(self._parentFrame)
        self._startButton.Create()
        self._startButton.SetEnabled(1)
        self._startButton.SetActiveBackgroundColor(0.9,0.9,0.9)
        self._startButton.SetReliefToRaised()
        self._startButton.SetBackgroundColor(0.9,0.9,0.9)
        self._startButton.SetText("Start!")
        self._startButton.SetWidth(8)
        self._startButton.SetHeight(2)
        self._startButton.SetBalloonHelpString("Click to start")

        self._resetButton.SetParent(self._parentFrame)
        self._resetButton.Create()
        self._resetButton.SetEnabled(1)
        self._resetButton.SetActiveBackgroundColor(0.9,0.9,0.9)
        self._resetButton.SetReliefToRaised()
        self._resetButton.SetBackgroundColor(0.9,0.9,0.9)
        self._resetButton.SetText("Cancel")
        self._resetButton.SetWidth(8)
        self._resetButton.SetHeight(2)
        self._resetButton.SetBalloonHelpString("Click to reset")


        slicer.TkCall("pack %s -side right -expand n -padx 2 -pady 5 -in %s" % (self._startButton.GetWidgetName(), self._parentFrame.GetWidgetName()))
        slicer.TkCall("pack %s -side right -expand n -padx 2 -pady 5 -in %s" % (self._resetButton.GetWidgetName(), self._parentFrame.GetWidgetName()))

        self.Reset()
Esempio n. 6
0
    def BuildGUI(self):
        SlicerVMTKAdvancedPageSkeleton.BuildGUI(self)


        self._numberOfSigmaSteps.SetParent(self._parentFrame)
        self._numberOfSigmaSteps.Create()
        self._numberOfSigmaSteps.SetRange(0.0,2000.0)
        self._numberOfSigmaSteps.ClampMinimumValueOn()
        self._numberOfSigmaSteps.ClampMaximumValueOn()
        self._numberOfSigmaSteps.ClampResolutionOn()
        self._numberOfSigmaSteps.SetThumbWheelHeight(10)
        self._numberOfSigmaSteps.SetResolution(1.0)
        self._numberOfSigmaSteps.SetLength(150)
        self._numberOfSigmaSteps.DisplayEntryOn()
        self._numberOfSigmaSteps.DisplayLabelOn()
        self._numberOfSigmaSteps.GetLabel().SetText("Number of Sigma Steps")


        slicer.TkCall("pack %s -side top -expand y -padx 2 -pady 10" % self._numberOfSigmaSteps.GetWidgetName())
        
        self._numberOfIterations.SetParent(self._parentFrame)
        self._numberOfIterations.Create()
        self._numberOfIterations.SetRange(0.0,2000.0)
        self._numberOfIterations.ClampMinimumValueOn()
        self._numberOfIterations.ClampMaximumValueOn()
        self._numberOfIterations.ClampResolutionOn()
        self._numberOfIterations.SetThumbWheelHeight(10)
        self._numberOfIterations.SetResolution(1.0)
        self._numberOfIterations.SetLength(150)
        self._numberOfIterations.DisplayEntryOn()
        self._numberOfIterations.DisplayLabelOn()
        self._numberOfIterations.GetLabel().SetText("Number of Iterations")


        slicer.TkCall("pack %s -side top -expand y -padx 2 -pady 10" % self._numberOfIterations.GetWidgetName())

        self._numberOfDiffusionSubIterations.SetParent(self._parentFrame)
        self._numberOfDiffusionSubIterations.Create()
        self._numberOfDiffusionSubIterations.SetRange(0.0,2000.0)
        self._numberOfDiffusionSubIterations.ClampMinimumValueOn()
        self._numberOfDiffusionSubIterations.ClampMaximumValueOn()
        self._numberOfDiffusionSubIterations.ClampResolutionOn()
        self._numberOfDiffusionSubIterations.SetThumbWheelHeight(10)
        self._numberOfDiffusionSubIterations.SetResolution(1.0)
        self._numberOfDiffusionSubIterations.SetLength(150)
        self._numberOfDiffusionSubIterations.DisplayEntryOn()
        self._numberOfDiffusionSubIterations.DisplayLabelOn()
        self._numberOfDiffusionSubIterations.GetLabel().SetText("Number of Diffusion Sub Iterations")


        slicer.TkCall("pack %s -side top -expand y -padx 2 -pady 10" % self._numberOfDiffusionSubIterations.GetWidgetName())

        self._spinboxFrame.SetParent(self._parentFrame)
        self._spinboxFrame.Create()
        self._spinboxFrame.AllowFrameToCollapseOff()
        self._spinboxFrame.SetLabelText("Input arguments")
        self._spinboxFrame.SetReliefToSunken()    

        slicer.TkCall("pack %s -side top -expand y -padx 2 -pady 10 -in %s" % (self._spinboxFrame.GetWidgetName(), self._parentFrame.GetWidgetName()))
        
        self._sigmaMin.SetParent(self._spinboxFrame.GetFrame())
        self._sigmaMin.Create()
        self._sigmaMin.GetWidget().SetRange(0.0,100.0)
        self._sigmaMin.GetWidget().SetIncrement(0.1)
        self._sigmaMin.GetWidget().SetWidth(5)
        self._sigmaMin.GetWidget().SetValueFormat("%.1f")
        self._sigmaMin.SetLabelText("Sigma Min:")
        self._sigmaMin.SetBalloonHelpString("")

        slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._sigmaMin.GetWidgetName())
        
        self._sigmaMax.SetParent(self._spinboxFrame.GetFrame())
        self._sigmaMax.Create()
        self._sigmaMax.GetWidget().SetRange(0.0,100.0)
        self._sigmaMax.GetWidget().SetIncrement(0.1)
        self._sigmaMax.GetWidget().SetWidth(5)
        self._sigmaMax.GetWidget().SetValueFormat("%.1f")
        self._sigmaMax.SetLabelText("Sigma Max:")
        self._sigmaMax.SetBalloonHelpString("")

        slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._sigmaMax.GetWidgetName())

        self._alpha.SetParent(self._spinboxFrame.GetFrame())
        self._alpha.Create()
        self._alpha.GetWidget().SetRange(0.0,100.0)
        self._alpha.GetWidget().SetIncrement(0.1)
        self._alpha.GetWidget().SetWidth(5)
        self._alpha.GetWidget().SetValueFormat("%.1f")
        self._alpha.SetLabelText("Alpha:")
        self._alpha.SetBalloonHelpString("")

        slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._alpha.GetWidgetName())

        self._beta.SetParent(self._spinboxFrame.GetFrame())
        self._beta.Create()
        self._beta.GetWidget().SetRange(0.0,100.0)
        self._beta.GetWidget().SetIncrement(0.1)
        self._beta.GetWidget().SetWidth(5)
        self._beta.GetWidget().SetValueFormat("%.1f")
        self._beta.SetLabelText("Beta:")
        self._beta.SetBalloonHelpString("")

        slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._beta.GetWidgetName())

        self._gamma.SetParent(self._spinboxFrame.GetFrame())
        self._gamma.Create()
        self._gamma.GetWidget().SetRange(0.0,100.0)
        self._gamma.GetWidget().SetIncrement(0.1)
        self._gamma.GetWidget().SetWidth(5)
        self._gamma.GetWidget().SetValueFormat("%.1f")
        self._gamma.SetLabelText("Gamma:")
        self._gamma.SetBalloonHelpString("")

        slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._gamma.GetWidgetName())

        self._timestep.SetParent(self._spinboxFrame.GetFrame())
        self._timestep.Create()
        self._timestep.GetWidget().SetRange(0.0,100.0)
        self._timestep.GetWidget().SetIncrement(0.01)
        self._timestep.GetWidget().SetWidth(5)
        self._timestep.GetWidget().SetValueFormat("%.2f")
        self._timestep.SetLabelText("Timestep:")
        self._timestep.SetBalloonHelpString("")

        slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._timestep.GetWidgetName())

        self._epsilon.SetParent(self._spinboxFrame.GetFrame())
        self._epsilon.Create()
        self._epsilon.GetWidget().SetRange(0.0,100.0)
        self._epsilon.GetWidget().SetIncrement(0.01)
        self._epsilon.GetWidget().SetWidth(5)
        self._epsilon.GetWidget().SetValueFormat("%.2f")
        self._epsilon.SetLabelText("Epsilon:")
        self._epsilon.SetBalloonHelpString("")

        slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._epsilon.GetWidgetName())

        self._wstrength.SetParent(self._spinboxFrame.GetFrame())
        self._wstrength.Create()
        self._wstrength.GetWidget().SetRange(0.0,100.0)
        self._wstrength.GetWidget().SetIncrement(0.1)
        self._wstrength.GetWidget().SetWidth(5)
        self._wstrength.GetWidget().SetValueFormat("%.1f")
        self._wstrength.SetLabelText("WStrength:")
        self._wstrength.SetBalloonHelpString("")

        slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._wstrength.GetWidgetName())

        self._sensitivity.SetParent(self._spinboxFrame.GetFrame())
        self._sensitivity.Create()
        self._sensitivity.GetWidget().SetRange(0.0,100.0)
        self._sensitivity.GetWidget().SetIncrement(0.1)
        self._sensitivity.GetWidget().SetWidth(5)
        self._sensitivity.GetWidget().SetValueFormat("%.1f")
        self._sensitivity.SetLabelText("Sensitivity:")
        self._sensitivity.SetBalloonHelpString("")

        slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._sensitivity.GetWidgetName())

        self._startButton.SetParent(self._parentFrame)
        self._startButton.Create()
        self._startButton.SetText("Start!")
        self._startButton.SetWidth(8)
        self._startButton.SetBalloonHelpString("Click to start")

        slicer.TkCall("pack %s -side top -anchor e -expand y -padx 2 -pady 2" % self._startButton.GetWidgetName())

        self.Reset()