mirror of
https://github.com/wassname/scikit-image.git
synced 2026-07-23 13:10:18 +08:00
Add update_on parameter to slider and allow update on release.
This commit is contained in:
@@ -6,7 +6,6 @@ from PyQt4.QtCore import Qt
|
||||
from util import ColorMixer
|
||||
|
||||
|
||||
|
||||
class IntelligentSlider(QWidget):
|
||||
''' A slider that adds a 'name' attribute and calls a callback
|
||||
with 'name' as an argument to the registered callback.
|
||||
@@ -19,7 +18,8 @@ class IntelligentSlider(QWidget):
|
||||
The range of the slider is hardcoded from zero - 1000,
|
||||
but it supports a conversion factor so you can scale the results'''
|
||||
|
||||
def __init__(self, name, a, b, callback, orientation='vertical'):
|
||||
def __init__(self, name, a, b, callback, orientation='vertical',
|
||||
update_on='move'):
|
||||
QWidget.__init__(self)
|
||||
self.name = name
|
||||
self.callback = callback
|
||||
@@ -41,7 +41,12 @@ class IntelligentSlider(QWidget):
|
||||
self.slider = QSlider(orientation_slider)
|
||||
self.slider.setRange(0, 1000)
|
||||
self.slider.setValue(500)
|
||||
self.slider.valueChanged.connect(self.slider_changed)
|
||||
if update_on == 'move':
|
||||
self.slider.sliderMoved.connect(self.slider_changed)
|
||||
elif update_on == 'release':
|
||||
self.slider.sliderReleased.connect(self.slider_changed)
|
||||
else:
|
||||
raise ValueError("Unexpected value %s for 'update_on'" % update_on)
|
||||
|
||||
self.name_label = QLabel()
|
||||
self.name_label.setText(self.name)
|
||||
@@ -62,9 +67,12 @@ class IntelligentSlider(QWidget):
|
||||
self.layout.addWidget(self.name_label, 0, 0)
|
||||
self.layout.addWidget(self.slider, 0, 1, alignment)
|
||||
self.layout.addWidget(self.value_label, 0, 2)
|
||||
else:
|
||||
msg = "Unexpected value %s for 'orientation'"
|
||||
raise ValueError(msg % orientation)
|
||||
|
||||
# bind this to the valueChanged signal of the slider
|
||||
def slider_changed(self, val):
|
||||
def slider_changed(self):
|
||||
val = self.val()
|
||||
self.value_label.setText(str(val)[:4])
|
||||
|
||||
|
||||
@@ -98,17 +98,17 @@ class Plugin(QtGui.QDialog):
|
||||
else:
|
||||
return param
|
||||
|
||||
def add_argument(self, name, low, high, callback):
|
||||
name, slider = self.add_slider(name, low, high, callback)
|
||||
def add_argument(self, name, low, high, callback, **kwargs):
|
||||
name, slider = self.add_slider(name, low, high, callback, **kwargs)
|
||||
self.arguments[name] = slider
|
||||
|
||||
def add_keyword_argument(self, name, low, high, callback):
|
||||
name, slider = self.add_slider(name, low, high, callback)
|
||||
def add_keyword_argument(self, name, low, high, callback, **kwargs):
|
||||
name, slider = self.add_slider(name, low, high, callback, **kwargs)
|
||||
self.keyword_arguments[name] = slider
|
||||
|
||||
def add_slider(self, name, low, high, callback):
|
||||
def add_slider(self, name, low, high, callback, **kwargs):
|
||||
slider = IntelligentSlider(name, low, high, callback,
|
||||
orientation='horizontal')
|
||||
orientation='horizontal', **kwargs)
|
||||
self.layout.addWidget(slider, self.row, 0)
|
||||
self.row += 1
|
||||
return name.replace(' ', '_'), slider
|
||||
|
||||
@@ -11,9 +11,12 @@ class CannyPlugin(Plugin):
|
||||
width = kwargs.get('width', 400)
|
||||
super(CannyPlugin, self).__init__(image_viewer,
|
||||
width=width, height=height)
|
||||
self.add_keyword_argument('sigma', 0.005, 0, self.caller)
|
||||
self.add_keyword_argument('low_threshold', 0.255, 0, self.caller)
|
||||
self.add_keyword_argument('high_threshold', 0.255, 0, self.caller)
|
||||
self.add_keyword_argument('sigma', 0.005, 0, self.caller,
|
||||
update_on='release')
|
||||
self.add_keyword_argument('low_threshold', 0.255, 0, self.caller,
|
||||
update_on='release')
|
||||
self.add_keyword_argument('high_threshold', 0.255, 0, self.caller,
|
||||
update_on='release')
|
||||
# Call callback so that image is updated to slider values.
|
||||
self.caller()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user