user-interface - tutorial - guide matlab pdf
¿La GUÍA del creador de gui de MATLAB es tan horrible como creo? ¿Hay una alternativa? (6)
He estado tratando de armar una GUI en MATLAB y he tenido grandes dificultades. Aquí hay un poco de historia acerca de mi programa: quiero crear un asistente para hacer avanzar a los usuarios a través de un proceso de análisis de imágenes. El asistente indicará a los usuarios su entrada y luego realizará una acción de procesamiento de imagen una vez que se haya presionado un botón con la etiqueta "Siguiente", y así sucesivamente. Al leer la ayuda de MATLAB, creo que hay dos enfoques para la creación de GUI: 1. escribir una GUI con líneas de código. 2. usa la GUÍA.
Pensé que GUIDE tendría la curva de aprendizaje más superficial. Al principio, el proceso fue directo. Podría arrastrar y soltar botones y cuadros de texto y organizarlos fácilmente. Mi plan era organizar una serie de paneles, con botones, texto, etc., que se volverían secuencialmente visibles cuando se presionó el botón "Siguiente". Y fue aquí donde me quedé perplejo.
Una vez que guardo un panel con GUIDE, MATLAB crea un archivo .m y un archivo .fig. Leyendo el archivo .m veo que me ha dejado espacio para escribir código para las devoluciones de llamada, pero poco más. El archivo .fig es binario y, por lo tanto, no me atrevo a editarlo. Me pregunto cómo puedo controlar los objetos, por ejemplo, ¿cómo establecer la visibilidad de un panel? Además, tuve que crear cada panel del asistente por separado. Esperaba poder combinar manualmente los archivos .m en un archivo wizard.m wrapper, pero no creo que este sea el enfoque correcto (al menos para mí, porque no puedo ver cómo hacerlo).
En lugar de usar GUIDE, he visto ejemplos donde guis se crean usando la función "uicontrol". Este enfoque me parece tedioso, porque tendría que codificar manualmente la posición, el tamaño y los valores predeterminados de cada botón. Tal vez este es el mejor enfoque, pero me intimida.
Como resultado, estoy descontento con MATLAB por sus herramientas de interfaz gráfica de usuario aparentemente torpes y no estoy contento conmigo mismo por carecer de las herramientas para superar este obstáculo.
He visto algunas guias de fantasía creadas en MATLAB y habiendo intentado esto yo mismo y quedándome corto, estoy desconcertado por su existencia. O cualquiera que los hizo fueron usuarios excepcionales de MATLAB (no lo soy), o me falta algo obvio y podría necesitar ayuda para ver. Ahora estoy cuestionando si una GUI vale la pena el esfuerzo. No me veo explorando algo como QT, debido al desafío adicional de incrustar el código de MATLAB en otros lenguajes como Python.
¿Alguien tiene consejos sobre este tema? ¿Alguien puede señalar dónde estoy yendo mal o por qué estoy teniendo tanta dificultad?
El archivo .fig es binario y, por lo tanto, no me atrevo a editarlo.
El archivo FIG es un archivo MAT que contiene la lista de elementos de la GUI con las propiedades que configura en GUIDE.
¿Cómo establecer la visibilidad de un panel?
Asigna una etiqueta al elemento, puedes acceder usando handles.mytag
como set(handles.mypanel, ''visible'', ''off'')
Además, tuve que crear cada panel del asistente por separado. Esperaba poder combinar manualmente los archivos .m en un archivo wizard.m wrapper, pero no creo que este sea el enfoque correcto (al menos para mí, porque no puedo ver cómo hacerlo).
No puede combinar estos m-files generados automáticamente en uno, ¿por qué lo haría de todos modos? Mantenga un archivo .fig y .m para cada página del asistente.
En lugar de usar GUIDE, he visto ejemplos donde guis se crean usando la función "uicontrol". Este enfoque me parece tedioso, porque tendría que codificar manualmente la posición, el tamaño y los valores predeterminados de cada botón. Tal vez este es el mejor enfoque, pero me intimida.
Usar uicontrol
directamente no está mal si no coloca los elementos manualmente sino que usa un administrador de diseño . Puedes ver algunos aquí y aquí . Si desea que su GUI sea redimensionable, el administrador de diseño es la única forma de hacerlo.
¿Alguien tiene consejos sobre este tema? ¿Alguien puede señalar dónde estoy yendo mal o por qué estoy teniendo tanta dificultad?
La programación de GUI profesional no es fácil, IMO es incluso la parte más difícil.
Además de MATLAB GUI, he usado mucho Java Swing y .NET WPF, IMO MATLAB GUI es mucho más fácil, puedes hacer 90% con un 10% de esfuerzo (de aprendizaje). Claro, todavía necesitas tiempo para acostumbrarte.
Como resultado, estoy descontento con MATLAB por sus herramientas de interfaz gráfica de usuario aparentemente torpes y no estoy contento conmigo mismo por carecer de las herramientas para superar este obstáculo.
Sí, GUIDE no es la mejor solución, pero es probablemente la mejor técnica para crear rápidamente una GUI.
He visto algunas guias de fantasía creadas en MATLAB y habiendo intentado esto yo mismo y quedándome corto, estoy desconcertado por su existencia.
Estas GUI son hacks que explotan los detalles particulares de la GUI de MATLAB, como el separador visual que es un texto negro largo ''__________'' en un uicontrol blanco que tiene solo dos píxeles de alto o diferentes colores en la información sobre herramientas al usar html.
Y después de todo, puede usar Java Swing en una GUI de MATLAB (porque en realidad se deriva de Swing)
Ahora estoy cuestionando si una GUI vale la pena el esfuerzo.
Sí, en tu caso manténlo simple, solo la funcionalidad, ¡no pienses en cosas elegantes!
He estado programando GUIS en MATLAB.
Por lo que he visto, GUIDE hace que la programación de guis sea bastante conveniente. Como dijiste, en realidad no tienes que molestarte en programar botones, etc., solo arregla los botones y llena los archivos-m. Dentro de los botones puede manejar la visibilidad configurando la propiedad ''Visible'' en ''on'' u ''off''.
Intenté ambos enfoques: escribir manualmente la GUI y escribirla usando GUIDE. Tenía la impresión de que realmente solo tienes que entrar en eso. Una vez que obtuviste el concepto de controladores (eso es lo principal con matlab guis) lo tienes.
Primero intenta programar una GUI simple, no comiences con tu proyecto. Obtenga información sobre cómo funcionan los identificadores y el inspector en MATLAB y cómo puede establecer las propiedades de los valores. Averigüe dónde puede almacenar datos dentro de la GUI y cómo recuperarlos en otras ventanas (pasar identificadores entre ventanas).
¡Supongo que eso es todo! La programación de GUIS en MATLAB puede ser difícil de comenzar, pero es bastante sencillo una vez que descubras las cosas que mencioné anteriormente.
Personalmente, encuentro que GUIDE es lo suficientemente buena para GUI sencillas y rápidas y para aprender a crear GUI, pero ahora generalmente prefiero crear las GUI programáticamente. Esto permite un mejor control del contenido. Para mí, lo crucial es usar las propiedades UserData de los elementos de la interfaz de usuario para almacenar cualquier información útil, incluidos los identificadores de los objetos de la interfaz de usuario que desee actualizar.
Pero si quieres algo inteligente, entonces tendrás que recurrir a algo basado en Java o .NET.
Además, es importante recordar en qué es mejor MATLAB, y las GUI no son el fuerte. Si usa un lenguaje de programación donde la creación de la GUI es mejor, deberá comprometerse con otra cosa, como la facilidad de trabajar con los datos de matrices y matrices.
EDITAR : El cuadro de herramientas de diseño de GUI enlazado por @Mikhail parece extremadamente útil.
El principal problema con las GUI generadas por GUIDE, en oposición a las creadas mediante programación, es el hecho de que el archivo no es un texto . Por lo tanto, no puede usar un control de versión. Hay una solución: puede usar la función de export
para crear solo el archivo .m
. Por supuesto, no podrá volver a cambiar a fig
y editarlo visualmente.
Personalmente, prefiero escribir GUI sin GUÍA.
Llegaré tarde a esta conversación, pero quería agregar mi $ 0.02. Como mencionaste, el diseño de GUI no es el mejor traje de MatLab. Sin embargo, se puede hacer mucho con eso. Si tiene alguna pregunta específica, me gustaría responderlas. Además, tenga en cuenta que está construido en la biblioteca java swing para que pueda utilizar esas características. Sin embargo, estas características no están documentadas. Hay un título de libro Secretos indocumentados de MatLab que proporciona una discusión bastante decente de los componentes de oscilación subyacentes.
Hay peculiaridades en la GUI de MatLab, pero si puede superarlas, entonces lo disfrutará. Además, como se mencionó anteriormente, uno de los obstáculos más difíciles es el concepto de identificadores. Una vez que entiendas ese concepto, estarás el 90% del camino hasta allí.
GUIDE es, desde junio de 2015, peor de lo que piensas. Altamente ineficiente para configurar una GUI, es un error como el infierno. Definitivamente no de grado profesional. GUÍA, ¿cómo te desprecio? Déjame enumerar las formas:
1) Los errores de entrada al crear una GUI no están marcados. Con este error no anunciado al acecho, puede trabajar durante horas. Cuando presiona "GUARDAR", la GUÍA no guardará su trabajo. Por lo tanto, GUIDE infringe la directiva principal de cualquier paquete de software: no perderá el trabajo o los datos del usuario. No puedo creer que Mathworks haya publicado algo tan malo.
2) La copia de pandillas es dudoso. Digamos que tienes un programa que calcula el efecto del desayuno. Tiene horas, minutos, cantidad de hidratos de carbono como cuadros editables. Tienes etiquetas como texto estático. Quieres lo mismo para el almuerzo y la cena. Seleccionar todo. Ctrl-C. Apunte el cursor a otro lugar y presione Ctrl-V. No pasa nada. No, espera, unos 30 segundos después, aparece el mensaje. Pero si ya estás haciendo otra cosa, bueno ... Intenta descubrir qué diablos pasó.
3) Incluso un movimiento de pandillas es dudoso / extraño / sobrenatural / poseído. Digamos que quieres mover esa fila con el almuerzo arriba y abajo? Realce. Usa las teclas de flecha para moverlo. ¡Éxito! ¡Pero espera! ¡Después de unos cinco segundos, el texto y las cajas de edición comienzan a regresar a la posición original! Sin intervención! ¡Está poseído!
He usado GUIDE para crear una GUI bastante compleja. Demasiado dolor de cabeza y complicaciones de lo que debería - o podría - ser. Dadas las alternativas de software gratuito que ejecutan JAVA / Python / Julia, no comenzaría otro proyecto de MATLAB que necesitara una GUI. ¡Guarde su masa!