2015-10-28 12 views
1

Я работаю над довольно сложным (для меня) графическим интерфейсом в Matlab, программным путем без GUIDE.Назначение guihandles в программном дизайне GUI Matlab

Различные, но схожие способы организации объектов GUI меня путают. Пожалуйста, скажите мне, где мое понимание неверно, и если они на самом деле разные у всех:

Что такое функциональное различие между двумя следующими ручками структуры:

1) обрабатывает заселенной ... обрабатывает? ... объектов GUI, созданных явно с помощью дескрипторов . префикс. Функция guidata используется в функциях обратного вызова, чтобы получить последнюю копию ручек, а затем сохранить ее.

handles.button = uicontrol(...); 
guidata(handles.fig,handles); 

появляется в ручками как кнопку.

2) обрабатывает заселена 'Tag' полей объектов GUI на рисунке рис. Эта структура создается после (?) Рисования всех ваших объектов GUI, используя guihandles.

button = uicontrol(...'Parent',fig,'Tag','push'...); 
handles = guihandles(fig); 

появляется в ручек как толчок.

guidata функция не кажется, сохранить ручки STRUCT сделанные guihandles. Нужно ли вместо этого использовать handles = guihandles (fig) в конце каждого обратного вызова?

Или я думаю о неправильном строении второго типа и беспокоится о ручках . префикс не нужен вообще? Поскольку создание нового объекта GUI и сразу ввод только

guihandles 

в консоль показывает новый объект GUI, перечисленный со своими старыми объектами GUI. Но я вижу, этот новый объект хранится открыто в моей рабочей области, а не под ручками пока я не использовать

handles = guihandles; 

снова.

Прошу прощения, если для получения того, что я прошу, перечитайте или перечитайте все два из приведенных выше.

ответ

0

Нет никакой разницы между двумя структурами ручек, которые вы упоминаете. Обе структуры должны быть одинаковыми.

Необходимо использовать handles=guihandles(fig); вместо guihandles, потому что вам необходимо сообщить Matlab, где хранить результаты функции guihandles.Если вы не дадите ему переменную для хранения результатов в левой части знака равенства, он сохранит вашу результирующую структуру в переменной ans.

Нет необходимости создавать структуру ручек в конце каждого обратного вызова. Вы должны иметь возможность использовать guihandles, чтобы создать свою структуру ручек только так, как вам нужно.

 Смежные вопросы

  • Нет связанных вопросов^_^