捕捉 ipyvuetify 单选按钮组值捕捉器的方法是什么?
What is the the way to catch the ipyvuetify radio button group value catcher?
我有一个包含单选按钮组的小部件,例如:
parts =vue.RadioGroup(children=[vue.Radio(label='XX'),
vue.Radio(label='YY'),
vue.Radio(label='ZZ')])
我不知道如何访问用户点击的内容,因此我尝试检查单选按钮组的所有属性:
out = widgets.Output()
def on_click_radio(widget, event, data):
with out:
out.clear_output()
print("you have clicked", data)
print("v_model is:", widget.v_model)
print("value is", widget.value)
print("active-class is", widget.active_class)
widgetsKeys = widget.keys
# for key in widgetsKeys:
# print(f'{key}: ',eval(f'widget.{key}'))
#
parts.on_event("change",on_click_radio)
display(parts,out)
我看到数据从 0 变为 2 ( [0,1,2] )
但我想访问值 'XX'、'YY' 或 'ZZ?
单选按钮组中访问的属性是什么?
我以为在文本输入中会是 v_model,但事实并非如此。
谢谢
PS1:它应该是这些属性之一:
https://vuetifyjs.com/en/api/v-radio-group/#props
但是我无法通过打印全部来弄清楚是哪一个
PS2:通过“_trait_values”字典访问此值似乎很麻烦。对吧?
有两种可能的解决方案。你更喜欢哪一种取决于你的具体情况。
解决方案 1:使用 Radio 传递一个值
parts = vue.RadioGroup(
children=[
vue.Radio(label='XX', value='XX'),
vue.Radio(label='YY', value='YY'),
vue.Radio(label='ZZ', value='ZZ')
]
)
这足以填充数据:
you have clicked XX
解决方案 2:将 on_click_radio 方法附加到单个 Radio 而不是 RadioGroup:
xx = vue.Radio(label='XX')
yy = vue.Radio(label='YY')
zz = vue.Radio(label='ZZ')
parts = vue.RadioGroup(children=[xx,yy,zz])
def on_click_radio(widget, event, data):
print("label is", widget.label)
xx.on_event("change",on_click_radio)
yy.on_event("change",on_click_radio)
zz.on_event("change",on_click_radio)
这将使您能够访问通过 on_click_radio 方法的 widget 参数单击的 Radio widget:
label is XX
您需要初始化无线电组中的v_model。然后就可以从 Radio Group children 中找到标签了。见下文。
import ipyvuetify as vue
parts =vue.RadioGroup(
v_model=None,
children=[
vue.Radio(label='XX'),
vue.Radio(label='YY'),
vue.Radio(label='ZZ'),
])
def on_click_radio(widget, event, data):
print("Active radio label is", widget.children[widget.v_model].label)
parts.on_event("change",on_click_radio)
parts
我有一个包含单选按钮组的小部件,例如:
parts =vue.RadioGroup(children=[vue.Radio(label='XX'),
vue.Radio(label='YY'),
vue.Radio(label='ZZ')])
我不知道如何访问用户点击的内容,因此我尝试检查单选按钮组的所有属性:
out = widgets.Output()
def on_click_radio(widget, event, data):
with out:
out.clear_output()
print("you have clicked", data)
print("v_model is:", widget.v_model)
print("value is", widget.value)
print("active-class is", widget.active_class)
widgetsKeys = widget.keys
# for key in widgetsKeys:
# print(f'{key}: ',eval(f'widget.{key}'))
#
parts.on_event("change",on_click_radio)
display(parts,out)
我看到数据从 0 变为 2 ( [0,1,2] ) 但我想访问值 'XX'、'YY' 或 'ZZ?
单选按钮组中访问的属性是什么? 我以为在文本输入中会是 v_model,但事实并非如此。
谢谢
PS1:它应该是这些属性之一: https://vuetifyjs.com/en/api/v-radio-group/#props 但是我无法通过打印全部来弄清楚是哪一个
PS2:通过“_trait_values”字典访问此值似乎很麻烦。对吧?
有两种可能的解决方案。你更喜欢哪一种取决于你的具体情况。
解决方案 1:使用 Radio 传递一个值
parts = vue.RadioGroup(
children=[
vue.Radio(label='XX', value='XX'),
vue.Radio(label='YY', value='YY'),
vue.Radio(label='ZZ', value='ZZ')
]
)
这足以填充数据:
you have clicked XX
解决方案 2:将 on_click_radio 方法附加到单个 Radio 而不是 RadioGroup:
xx = vue.Radio(label='XX')
yy = vue.Radio(label='YY')
zz = vue.Radio(label='ZZ')
parts = vue.RadioGroup(children=[xx,yy,zz])
def on_click_radio(widget, event, data):
print("label is", widget.label)
xx.on_event("change",on_click_radio)
yy.on_event("change",on_click_radio)
zz.on_event("change",on_click_radio)
这将使您能够访问通过 on_click_radio 方法的 widget 参数单击的 Radio widget:
label is XX
您需要初始化无线电组中的v_model。然后就可以从 Radio Group children 中找到标签了。见下文。
import ipyvuetify as vue
parts =vue.RadioGroup(
v_model=None,
children=[
vue.Radio(label='XX'),
vue.Radio(label='YY'),
vue.Radio(label='ZZ'),
])
def on_click_radio(widget, event, data):
print("Active radio label is", widget.children[widget.v_model].label)
parts.on_event("change",on_click_radio)
parts