Является ли руководство MATLAB gui creator таким ужасным, как я думаю? Есть ли альтернатива? [закрытый]

Я пытался собрать gui в MATLAB и имел большие трудности. Вот немного предыстории о моей программе: я хочу создать мастер для пользователей через процесс анализа изображения. Мастер подскажет пользователям их ввод, а затем выполнит действие обработки изображений после нажатия кнопки с надписью "далее" и так далее. Из чтения справки MATLAB я считаю, что есть два подхода к созданию gui: 1. напишите gui со строками кода. 2. использовать РУКОВОДСТВО.

Я подумал, что руководство будет иметь самую мелкую кривую обучения. Сначала процесс шел прямолинейно. Я мог перетаскивать кнопки и текстовые поля и легко организовать их. Мой план состоял в том, чтобы организовать серию панелей с кнопками, текстом и т. д., это будет последовательно становиться видимым при нажатии кнопки "Далее". И именно здесь я оказался в тупике.

Как только я сохраняю панель с руководством, MATLAB создает .M и a .файл рис. Чтение .м файл, который я вижу, оставил мне место для написания кода для обратных вызовов, но больше ничего. Этот.файл fig является двоичным, и поэтому я не смею его редактировать. Мне интересно, как я могу управлять объектами, например, как установить видимость панели? Кроме того, мне пришлось создать каждую панель мастера отдельно. Я надеялся, что смогу вручную совместить .м-файлы в мастер.файл wrapper м, но я не думаю, что это правильный подход (по крайней мере для меня, потому что я не вижу как это сделать он.)

вместо использования руководства я видел примеры, когда guis создаются с помощью функции "uicontrol". Этот подход кажется мне утомительным, потому что мне придется вручную кодировать положение, размер и значения по умолчанию каждой кнопки. Возможно, это лучший подход, но он меня пугает.

в результате я недоволен MATLAB за его, казалось бы, неуклюжие инструменты gui, и я недоволен собой за отсутствие отбивных, чтобы преодолеть это препятствие.

Я видел некоторые причудливые guis, созданные в MATLAB, и попробовав это сам и упав, я озадачен их существованием. Либо те, кто их сделал, были исключительными пользователями MATLAB (я нет), либо я упускаю что-то очевидное и могу использовать некоторую помощь. Теперь я задаюсь вопросом, стоит ли gui усилий. Я не вижу себя исследующим что-то вроде QT из-за дополнительной проблемы встраивания кода MATLAB в другие языки, такие как python.

есть ли у кого советы эта тема? Может ли кто-нибудь указать, где я ошибаюсь или почему у меня такие трудности?

6 ответов


The .файл fig является двоичным, и поэтому я не смею его редактировать.

файл FIG-это файл MAT, содержащий список элементов gui со свойствами, заданными в руководстве.

Как установить видимость панели?

назначьте тег элементу, вы можете получить к нему доступ с помощью handles.mytag Как set(handles.mypanel, 'visible', 'off')

кроме того, мне пришлось создать каждая панель мастера отдельно. Я надеялся, что смогу. вручную объединить .м-файлы в мастер.файл обертки m, но я делаю не думаю, что это правильный подход (по крайней мере для меня, потому что я не вижу как это сделать).

вы не можете объединить эти автоматически сгенерированные M-файлы в один, почему вы все равно хотите? Держать .фига и. файл м для каждой страницы мастера!

вместо использования руководства я видел примеры, когда guis создаются с использованием функция "uicontrol". Этот подход кажется мне утомительным, потому что я пришлось бы вручную кодировать позицию, размер и значения по умолчанию каждого кнопка. Возможно, это лучший подход, но он меня пугает.

используя uicontrol напрямую неплохо, если вы не располагаете элементы вручную, но используете макет менеджер. Вы можете увидеть некоторые здесь и здесь. Если вы хотите, чтобы ваш GUI был красиво изменен, то layout manager-единственный способ сделать это.

есть ли у кого-нибудь советы на эту тему? Кто-нибудь может указать где я ошибаюсь или почему у меня такие трудности?

профессиональное Программирование GUI не просто, IMO-это даже самая сложная часть.

помимо MATLAB GUI я использовал как Java Swing, так и .NET WPF много, IMO MATLAB GUI намного проще, вы можете сделать 90% с 10% (обучение) усилия конечно, вам все еще нужно время, чтобы привыкнуть к нему.

в результате я недоволен MATLAB для его, казалось бы, неуклюжего gui инструменты и я недоволен собой за отсутствие отбивных, чтобы преодолеть это препятствие.

да, руководство не является лучшим решением, но, вероятно, лучший метод для быстрого создания GUI.

Я видел некоторые причудливые guis, созданные в MATLAB и попробовав это я сам и, падая, я озадачен их существованием.

эти GUI-хаки, использующие конкретные детали GUI MATLAB как визуальный разделитель, являющийся длинным '__________' черный текст на белом uicontrol, который имеет только два пикселя или разные цвета в подсказке с помощью html.

и в конце концов вы можете использовать Java Swing в графическом интерфейсе MATLAB (потому что он фактически получен из Swing)

теперь я задаюсь вопросом, стоит ли gui усилий.

да, в вашем случае держите его очень простым, просто функциональность, не думайте о причудливых вещах!


руководство, по состоянию на июнь 2015 года, хуже, чем вы думаете. Очень неэффективно для настройки GUI,он глючит, как ад. Определенно не профессиональный уровень. Наставник, как я могу презирать тебя? Позвольте мне перечислить пути:

1) ошибки ввода при создании GUI не помечены. С этой необъявленной ошибкой вы можете работать часами. Когда вы нажмете "сохранить", руководство не сохранит вашу работу. Таким образом, руководство нарушает главную директиву любого программного пакета: ты не должен потерять пользователя работы или данные. Не могу поверить, что Mathworks выпустила что-то настолько плохое.

2) копирование банды является сомнительным. Предположим, у вас есть программа, которая вычисляет эффект завтрака. У вас есть час, минуты, количество углеводов в редактируемых коробках. У вас есть метки как статический текст. Вы хотите то же самое на обед и ужин. Выбрать все. Ctrl-C. наведите курсор куда-нибудь еще и нажмите Ctrl-V. ничего не происходит. Нет, подождите, примерно через 30 секунд появится паста. Но если вы уже делать что-то другое... Попробовать выяснить, что случилось.

3) даже движение банды является сомнительным / странным / сверхъестественным / одержимым. Скажем, вы хотите переместить этот ряд с обедом вверх и вниз? Выделить. Используйте клавиши со стрелками для перемещения. Успех! Но подождите! Примерно через пять секунд текст и поля редактирования начинают возвращаться в исходное положение! Без вмешательства! Он одержим!

Я использовал руководство для создания довольно сложного GUI. Больше боли и хлопот, чем так должно быть - или может быть. Учитывая бесплатные альтернативы, которые запускают JAVA/Python / Julia, я бы не начал другой проект MATLAB, который нуждался в GUI. Побереги свои деньги!


лично я нахожу руководство достаточно хорошим для быстрого простого GUIs и научиться создавать GUIs, но теперь я обычно предпочитаю создавать GUIs программно. Это позволяет гораздо лучше контролировать контент. Для меня суть заключается в использовании свойств UserData элементов UI для хранения любых полезных данных, включая дескрипторы объектов UI, которые вы хотите обновить.

но если вы хотите что-то умное, то вам придется прибегнуть к чему-то Java-или На основе .NET.

кроме того, важно помнить, что MATLAB лучше всего, и GUIs не являются сильным костюмом. Если вы используете язык программирования, где создание GUI лучше, тогда вам придется пойти на компромисс по чему-то еще, например, простоте работы с массивами и матричными данными.

редактировать: The GUI Layout Toolbox связанный с @Mikhail выглядит чрезвычайно полезным.


я программировал guis в MATLAB.

из того, что я видел, руководство делает программирование guis довольно удобным. Как вы сказали, вам на самом деле не нужно беспокоиться о программировании каких-либо кнопок и т. д. это просто упорядочивание кнопок и заполнение m-файлов. Внутри кнопок вы можете обрабатывать видимость, установив для свойства "видимый" значение "вкл." или " выкл.".

Я пробовал оба подхода: вручную писать gui и писать его с помощью руководства. У меня сложилось впечатление, что вы действительно просто надо разобраться. Как только вы получили концепцию ручек (это главное в MATLAB guis), у вас есть это.

попробуйте сначала простой графический интерфейс, не начать с вашего проекта. Получите представление о том, как дескрипторы и инспектор работают в MATLAB и как вы можете установить свойства значений. Выясните, где вы можете хранить данные в GUI и как получить их в других окнах (передайте дескрипторы между окнами).

думаю, это все! Программирование guis в MATLAB может трудно начать, но это довольно прямо вперед, как только вы поняли вещи, о которых я упоминал выше.


основная проблема с GUIS, сгенерированным руководством, в отличие от программно созданных, заключается в том, что файл не текст. Таким образом, нельзя использовать элемент управления версиями. Существует обходной путь-вы можете использовать export функция для создания только . Конечно, вы не сможете переключить его обратно к fig и изменить ее визуально.
Лично я всегда предпочитаю писать GUIs без руководства.


Я опаздываю на этот разговор, но хотел добавить свои $0.02. Как вы упомянули, дизайн GUI не является сильной стороной MatLab. Однако с ним можно многое сделать. Если у вас возникли конкретные вопросы, я буду рад ответить на них. Кроме того, поймите, что он построен на библиотеке Java swing, поэтому вы можете фактически использовать эти функции. Однако эти особенности не документированы. Существует название книги Undocumented Secrets of MatLab, которая обеспечивает довольно приличное обсуждение базового качания комплектующие.

есть причуды в MATLAB GUI, но если вы сможете преодолеть их, вам понравится. Кроме того, как уже упоминалось ранее, одним из наиболее сложных препятствий является концепция ручек. Как только вы поймете эту концепцию, вы будете на 90% там.