Пользовательское форматирование для ipywidgets IntSlider

#python #jupyter-notebook #ipywidgets

#python #jupyter-ноутбук #ipywidgets

Вопрос:

Я работаю над интерактивным графиком. Одним из вариантов является выбор количества комнат для дома. Прямо сейчас, если вы введете любое число выше 5 в n_rooms аргумент, на графике всегда будут отображаться данные для домов, в которых 5 или более комнат. Итак, я создал это

 n_rooms = widgets.IntSlider(
    min=1,
    max=5,
    description='number of rooms:',
    layout=Layout(width='30%'),
    style=style,
    disabled=False)
  

Дело в том, что это покажет ползунок, который переходит от 1 к 5. Единственное, что я хочу изменить, это то, что вместо отображения «5» отображается «5 или более». Есть ли какой-либо способ сделать это?
Спасибо

Ответ №1:

Используйте ползунок выделения, чтобы использовать как целые числа, так и строки в ползунках.

 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   )
  

Ответ №2:

В моем случае (в основном для отображения научных данных) полезно определить 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 в вашей функции обновления.