Подтвердить что ты не робот

Является ли GUI-разработчик MATLAB так же ужасным, как я считаю? Есть ли альтернатива?

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

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

Вы не можете объединить эти автоматически сгенерированные m файлы в один, зачем вы хотите? Сохраните файл .fig и .m для каждой страницы мастера!

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

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

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

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

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

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

Да, GUIDE - не лучшее решение, но, вероятно, это лучший способ быстро создать графический интерфейс.

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

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

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

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

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

Ответ 2

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

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

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

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

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

Ответ 3

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

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

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

EDIT: панель инструментов GUI, связанная с @Mikhail, выглядит чрезвычайно полезной.

Ответ 4

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

Из того, что я видел, GUIDE делает программирование guis весьма удобным. Как вы сказали, на самом деле вам не нужно беспокоиться о программировании кнопок и т.д., Это просто настройка кнопок и заполнение m файлов. Внутри кнопок вы можете обрабатывать видимость, установив свойство "Видимый" на 'on' или "off".

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

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

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

Ответ 5

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

Ответ 6

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

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