@ubuntu 的答案是简单的方法。
另一种选择是子类化Slider
做你想做的事。这将是最灵活的(您甚至可以使滑块相互更新,但它们目前不这样做)。
然而,在这种情况下使用“ducktyping”很容易。唯一的要求是slidermin
and slidermax
have a val
属性。它们实际上不必是Slider
.
考虑到这一点,您可以执行以下操作:
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider
class FakeSlider(object):
def __init__(self, slider, func):
self.func, self.slider = func, slider
@property
def val(self):
return self.func(self.slider.val)
fig, ax = plt.subplots()
fig.subplots_adjust(bottom=0.25)
sliderax1 = fig.add_axes([0.15, 0.1, 0.75, 0.03], axisbg='gray')
sliderax2 = fig.add_axes([0.15, 0.15, 0.75, 0.03], axisbg='gray')
slider1 = Slider(sliderax1, 'Value 1', 0.1, 5, valinit=2)
slider2 = Slider(sliderax2, 'Value 2', -4, 0.9, valinit=-3,
slidermax=FakeSlider(slider1, lambda x: 1 - x))
plt.show()