Estoy generando una GUI de MATLAB usando GUIDE, pero quiero crear campos cuando un usuario hace clic en un botón. ¿Hay alguna manera de agregar dinámicamente nuevos objetos de GUI en las devoluciones de llamada?¿Agregue dinámicamente campos a la GUI de MATLAB?
Respuesta
Una forma de lograr esto es crear los objetos de la GUI al inicio, pero establezca su propiedad "Visibilidad" en "off". Luego, cuando el usuario hace clic en un botón, configura la propiedad "Visibilidad" en "on". De esta forma, no creará nuevos objetos de la GUI mientras la GUI se está ejecutando, simplemente estaría cambiando qué partes de la misma son visibles o no.
EDIT: Si usted no sabe cuántos nueva interfaz gráfica de objetos que necesita hasta el tiempo de ejecución, así es como debería añadir los nuevos objetos GUI a la estructura de asas (donde hFigure es un identificador para el Figura GUI):
p = uicontrol(hFigure,'Style','pushbutton','String','test',...
'Callback',@p_Callback); % Including callback, if needed
handles.test = p; % Add p to the "test" field of the handles structure
guidata(hFigure,handles); % Add the new handles structure to the figure
a continuación, por supuesto, tiene que escribir la función de devolución de llamada para el nuevo objeto de interfaz gráfica de usuario (si necesita uno), lo que podría ser algo como esto:
function p_Callback(hObject,eventdata)
handles = guidata(gcbf); % This gets the handles structure from the figure
...
(make whatever computations/changes to GUI are needed)
...
guidata(gcbf,handles); % This is needed if the handles structure is modified
Las funciones de interés que utilicé en el código anterior son: GUIDATA (para almacenar/recuperar datos para una GUI) y GCBF (obtener el manejador de la figura principal del objeto cuya devolución de llamada se está ejecutando actualmente).
Usando UICONTROL, podrá agregar 'campos' (llamados uicontroles o widgets).
Usted tendrá que especificar el estilo para conseguir los cuadros de edición, botones, etc ...
En realidad se puede querer tener todos los widgets que ya existe en la guía y luego simplemente cambiar la visibilidad o habilitado propiedad según sea necesario.
puede encontrar mis tutoriales en vídeo sobre la creación de interfaz gráfica de usuario en MATLAB aquí: http://blogs.mathworks.com/videos/category/gui-or-guide/
Esto debería cubrir este y muchos otros temas relacionados en la construcción de interfaz gráfica de usuario.
¿Puedo agregar el objeto uicontrol creado a los identificadores que se generan? Algo así como set (handleles.test, uicontrol_element) – victor
cuando haces el UICONTROL, captura el controlador: handleles.newWidget = uicontrol (.......) – MatlabDoug
- 1. Agregue textViews dinámicamente a linearLayout
- 2. Agregue dinámicamente la imagen a powerpoint openxml
- 3. Agregue imágenes dinámicamente a jquery
- 4. Agregue campos adicionales a fullcalendar
- 5. Agregue css dinámicamente a la página a través de javascript
- 6. Agregue dinámicamente elementos a una listaVer Android
- 7. Agregue dinámicamente reglas de URL a la aplicación Flask
- 8. GUI generada dinámicamente
- 9. Crear clases dinámicamente en matlab
- 10. Python: Agregar campos a objetos dinámicamente
- 11. Java Swing: cómo cambiar la GUI dinámicamente
- 12. ¿Cómo agregar control de barra de progreso a Matlab gui?
- 13. Agregue dinámicamente datos a un mapa de javascript
- 14. agregue dinámicamente imágenes al widget de galería
- 15. Compatibilidad entre Mac y Windows MATLAB Gui
- 16. Wtforms, agregue una clase a un formulario dinámicamente
- 17. agregue el método a una clase dinámicamente con el decorador
- 18. Agregue el elemento de formulario dinámicamente usando javascript - no enviando
- 19. En la compra de aplicaciones: agregue dinámicamente elementos no consumibles
- 20. Extender Ext.data.Model (agregar campos dinámicamente)
- 21. Iterar a través de nombres de campos struct en MATLAB
- 22. Ingeniería de software y patrones en la aplicación Matlab GUI?
- 23. ¿Cómo agregar imágenes en la GUI de MATLAB?
- 24. ¿Cómo puedo programar una GUI en MATLAB?
- 25. ¿Cómo puedo agregar dinámicamente campos de entrada a un formulario?
- 26. Agregue dinámicamente información sobre herramientas a las filas de la cuadrícula de kendo de una columna
- 27. Matlab: ejecuta el archivo sin abrir la GUI, luego cierra
- 28. Dibujando con el mouse en la GUI en matlab
- 29. Validar campos de entrada añadidos dinámicamente
- 30. ¿Tiene acceso a los campos Java dinámicamente en Clojure?
El problema es que no sé cuántos I ' Tendré que crear hasta el tiempo de ejecución. ¿Puedo hacerlo alterando los controladores gui creados? Estoy tratando de hacer: p = uicontroles (figura, 'Estilo', 'pulsador', 'Cadena', 'prueba') conjunto (handleles.test = p) pero me está dando errores. ¿Hay otra manera? – victor
el comando set mencionado anteriormente es un problema. ¿Qué estás tratando de lograr con eso? – MatlabDoug
Bien, estoy intentando editar gnovice, y por alguna razón cuando ejecuto eso en una devolución de llamada generada por una guía, termina cambiando un elemento existente. Mi código: new_t = uicontrol (hObject, 'estilo', 'editar') entonces trato: K >> Get (new_t, 'Estilo') ans = pulsador Es extraño porque conjunto (handles.test, 'Style', 'edit') termina cambiando handles.pushbutton.Style. ¿Alguna idea? – victor