He creado un botón de grupo con cuatro botones y un botón utilizando la guía.

Hay cuatro funciones, una para cada botón de radio escrito por separado.

  1. ¿Cómo se puede llamar a estas funciones desde respectivos botones de radio.
  2. Cuando un botón es presionado, la función asociada con la activa el botón de radio se debe ejecutar.
InformationsquelleAutor vijisai | 2010-04-12

2 Comentarios

  1. 6

    Una solución para el Grupo de botones de devolución de llamada: SelectionChangeFCN

    Utilizar el Cambio en la Selección propiedad callback (clic derecho sobre el Botón de Grupo y seleccione Vista de las devoluciones de llamada->SelectionChangeFcn) de la uipanel. El eventdata argumento contiene los controladores para el actual y el radiobutton seleccionado previamente. El eventdata argumento es una estructura con los siguientes campos:

    • EventName
    • OldValue
    • NewValue

    Así, dependiendo del valor de eventdata.NewValue; por ejemplo

    function uipanel1_SelectionChangeFcn(hObject,eventdata,handles)
    ...
    newButton=get(eventdata.NewValue,'tag');
    switch newButton
         case 'radiobutton1'
             % code for radiobutton 1 here
         case 'radiobutton2'
             % code for radiobutton 2 here
         ...
    end
    ...

    Una solución para el botón de devolución de llamada

    La devolución de llamada para su pulsador podría tener algo a lo largo de las líneas de

    function button1_Callback(hObject,eventdata,handles)
    h_selectedRadioButton = get(handles.uipanel1,'SelectedObject');
    selectedRadioTag = get(h_selectedRadioButton,'tag')
    switch selectedRadioTag
       case 'radiobutton1'
    
       case 'radiobutton2'
       ...
    end

    También me refiero a la documentación de MATLAB para obtener más información sobre Manejar Gráficos y la construcción de las interfaces gráficas de usuario.

    • Cómo hacer que los chicos siempre me pegaba a estos??? Justo estaba escribiendo una solución como esta… 🙂
    • Hmm… yo nunca he usado el enfoque de antes, pero tengo la sensación de que técnicamente es la manera correcta de hacerlo. +1 por mostrarme algo nuevo.
    • Igual suerte me di cuenta de la nueva pregunta en mi RSS-reader. Es sin duda cada vez más difícil de atrapar preguntas sin respuesta.
    • gracias. Ambos enfoques deben trabajar. La asignación de una devolución de llamada para cada botón de radio podría tener ventajas.
  2. 2

    Curso intensivo en la interfaz gráfica de usuario comienza… ahora:

    Si usted está usando guide, cuando guarde su figura mygui.fig, el M-archivo debe ser generado automáticamente como mygui.m. Abierto hasta mygui.m e introduzca su código en el botón de radio de la función de devolución de llamada. Las variables que desea inicializa cuando se inicie el programa debe ser definido en la apertura de la función. Asegúrese de que la actualización de las asas de la estructura al final de cada llamada, con el comando guidata(hObject,handles).

    Por ejemplo, si usted quería dos mutuamente exclusivos botones de radio (cuando se selecciona uno, el otro de-selecciona, o cuando usted selecciona uno, el otro está seleccionada), escriba el siguiente código en su devoluciones de llamada:

    function radiobutton1_Callback(hObject, eventdata, handles)
    if get(handles.hObject,'Value')
        set(handles.radiobutton2,'Value',0)
    else
        set(handles.radiobutton2,'Value',1)
    end
    guidata(hObject,handles);

    y

    function radiobutton2_Callback(hObject, eventdata, handles)
    if get(hObject,'Value')
        set(handles.radiobutton1,'Value',0)
    else
        set(handles.radiobutton1,'Value',1)
    end
    guidata(hObject,handles);

    E inicializar el botón de radio uno para ser seleccionado en virtud de la apertura de la función:

    set(handles.radiobutton1,'Value',1)
    set(handles.radiobutton2,'Value',0)
    • hmmm, acabo de dar cuenta de primera línea, tanto de sus funciones de control.b2 = …» . El maneja estructura contiene los identificadores para cada objeto gui. Entonces, ¿por qué usted restablecer el identificador del objeto etiquetado b2? Tal vez usted sólo debe tener «b2_value = get(…)» en su lugar?
    • Tienes razón, yo estaba descuidado con mi código. Editado para reflejar sus sugerencias.

Dejar respuesta

Please enter your comment!
Please enter your name here