ipywidgets IntSlider的自定义格式

时间:2019-03-22 18:38:03

标签: python jupyter-notebook ipywidgets

我正在制作一个交互式图表。选项之一是选择房子的房间数量。现在,如果您在def coroutine(func): def primed(*args, **kwargs): coro = func(*args, **kwargs) next(coro) return coro return primed def source(name, target): for x in range(1,4): target.send(f'{name}{x}') config = { 'filter1': '_F1', 'filter2': '_F2', 'filter3': '_F3', } @coroutine def filter1(target, **config): """This coroutine only consumes""" while True: data = yield target.send(data + config['filter1']) @coroutine def filter2(target, **config): """This coroutine only consumes""" while True: data = yield target.send(data + config['filter2']) @coroutine def filter3(target, **config): """This coroutine only consumes""" while True: data = yield target.send(data + config['filter3']) @coroutine def writer(where): while True: data = yield print(f'writing to {where}: {data}') def pipeline(): f3 = filter3(writer('console'), **config) f2 = filter2(f3, **config) f1 = filter1(f2, **config) source('data', f1) pipeline() 参数中输入大于5的数字,则该图将始终显示具有5个或更多房间的房屋的数据。所以我建造了这个

n_rooms

问题是,这将显示一个从1到5的滑块。我要更改的唯一事情是,它不显示“ 5”,而是显示“ 5或更大”。有什么办法吗? 谢谢

2 个答案:

答案 0 :(得分:0)

使用selection slider来同时使用滑块中的整数和字符串。

num_rooms = widgets.SelectionSlider(
options=['1', '2', '3', '4', '5 or more'],
value='1',
description='number of rooms:',
disabled=False,
continuous_update=False,
orientation='horizontal',
readout=True   )

答案 1 :(得分:0)

就我而言(主要显示科学数据),定义一个 Text 小部件并将其与滑块一起使用会很有帮助。您只需设置 readout=False 并使用 HBox。例如,我在 intensities 中存储了一些场强:

fs = IntSlider(
        description='fs: ',
        value=0, min=0, max=len(ints)-1,
        readout=False
    )
fs_text = Text(value=f'{ints[0]:.1f}V/nm', description='', layout=Layout(width='80px'))

# ...
# do some updates
# ...

HBox([fs, fs_text])

在这种情况下,您可以随意使用更新函数中的 Text 文本。