I would like to print the background scalarVolume value where the crosshair is when it is repositioned with Shift key.
Here is my code, it doesn’t work:
def probeBackgroundVolumeOverMouse():
infoWidget = slicer.modules.DataProbeInstance.infoWidget
if infoWidget.layerValues['B'].text == '':
return
#
cleanedTextOfDataProbe = infoWidget.layerValues['B'].text.split('<b>')[1].split('</b>')[0]
#
if cleanedTextOfDataProbe.isdecimal():
print(cleanedTextOfDataProbe)
elif cleanedTextOfDataProbe[1:].isdecimal():
print(cleanedTextOfDataProbe)
shortcut = qt.QShortcut(slicer.util.mainWindow())
shortcut.setKey(qt.QKeySequence('Shift')) #this doesn't work
#shortcut.setKey(qt.QKeySequence('.')) #this does work
shortcut.activated.connect(probeBackgroundVolumeOverMouse)
I guess there is some conflict because the Shift key is already used.
Really I’m just trying to get the value of the scalarVolume where the crosshair is. This is the first method that came to my mind but others are welcomed. Although retrieving the value using the Shift key is very important so it keeps it simple for the user.
So you’re trying to replicate the DataProbe module? Do you not want this updated value on the cursor position moved event? The DataProbe module gets this value by doing the following:
Hi @jamesobutler. I’ve got to reuse the code of the dataProbe but I still cannot execute my function on shift key press. Is this reacheable in Python? I was able to detect them on the sliceInteractor but I would prefer them to be detected on the mainWindow because sliceInteractor doesn’t react if it is not “selected” (i.e. it hasn’t been clicked inside)
@lassoan Do you have any suggestions on how to execute a callback by pressing the shiftkey? Is it possible on Python? Ideally the callback would be called multiple times while shift is still pressed.
Crosshair node is intended for continuous sampling. For taking discrete samples I would recommend to use markup points node. If you don’t want to allow your users to change the input points then you can immediately hide or delete the point after it has been placed.