我正在使用ipyvuetify库创建一个仪表板应用程序。我想在我的Slider组件中添加一个额外的TextField作为插槽。我遵循了vuetify documentation和slot documentation from ipyvuetify中给出的示例,但我没有设法使简单的"+“图标出现。
range = v.RangeSlider(
v_model = None,
v_slots = [{
'name': 'append',
'children': [v.Icon(children=['mdi-plus'])]
}]
)
range我错过了什么?这有可能吗?
发布于 2021-04-23 00:57:08
您的示例不起作用,因为RangeSlider的v_model是一个列表。
range_ = v.RangeSlider(
v_model = [1,2],
min=1,
max=10,
v_slots = [{
'name': 'append',
'children': [v.Icon(children=['mdi-plus'])]
}]
)
range_但是,正如ipyvuetify中记录的v_slot错误一样,只要您与滑块交互,插槽就会消失。
一个变通办法是创建一个带有append_icon参数的自定义范围滑块(如果你正在寻找一个图标作为插槽)。
class RangeSlider(v.RangeSlider):
def __init__(self, *args, **kwargs):
self.append_icon='mdi-plus'
super().__init__(*args,**kwargs)
self.on_event('click:append', self.add)
def add(self, *args):
self.v_model = [self.v_model[0]] + [self.v_model[1]+1]
rs=RangeSlider(min=1, max=10, v_model = [1,2])
rs但是,如果您打算包含一个TextField,我可以创建一个定制的Flex元素,使两个小部件都链接在一起。
发布于 2021-04-23 18:47:21
正如@dguerrero提到的那样,插槽很棘手,并且不是完全支持的。对于文本字段,是否可以使用jsdlink?
import ipyvuetify as v
import ipywidgets as widgets
rangeSlider = v.RangeSlider(class_='pa-2',
thumb_label = True,
style_="max-width:500px",
height = 90,
v_model=[0,10.0],
min=0,
max=10.0,
step=0.01,
label='min/max:',
vertical = False,
)
textField = v.TextField(class_='pa-2',
style_="max-width:100px",
v_model=rangeSlider.v_model,
placeholder='',
label='',
disabled=False
)
widgets.jsdlink((rangeSlider,'v_model'),(textField,'v_model'))
v.Row(children=[rangeSlider,textField])https://stackoverflow.com/questions/67192369
复制相似问题