0

我有一个小部件,包括一个单选按钮组,例如:

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' 字典访问这些值似乎令人头疼。正确的?

4

2 回答 2

2

您需要在无线电组中初始化 v_model。然后您可以从 Radio Group 子项中找到该标签。见下文。

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

在此处输入图像描述

于 2021-04-20T08:28:07.903 回答
0

有两种可能的解决方案。您更喜欢哪一种取决于您的具体情况。

解决方案 1:使用 Radio 传递一个值

parts = vue.RadioGroup(
    children=[
        vue.Radio(label='XX', value='XX'),
        vue.Radio(label='YY', value='YY'),
        vue.Radio(label='ZZ', value='ZZ')
    ]
)

这足以填充数据:

你点击了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 小部件:

标签是 XX

于 2021-04-18T17:24:35.303 回答