2014-09-12 4 views
0

Итак, у меня есть большой GUIDE GUIDE GUIDE, который я не создал, но мне поручено расширять его. Теперь я всегда пишу свой графический интерфейс вручную без GUIDE и занимаюсь чисткой этого и исправляю его, не переписывая все это без GUIDE.Как получить доступ к GUID GUIDE в обратных вызовах GUIDE

Так что помимо всего прочего, я вручную добавил в GUI-объекты новые объекты GUI в _OpeningFcn. До сих пор все хорошо, они делают то, что я должен добавить, чтобы вызвать обратные вызовы и функциональность, как я ожидал.

Проблема заключается в том, что если я хочу добавить что-то, ссылающееся на новые элементы в обратных вызовах GUIDE (т. Е. Предшествующие обратные вызовы), дескриптор struct (который передается обратному вызову GUIDE, как обычно) не содержит никаких объекты, которые я добавил в _OpeningFcn. Таким образом, я не могу манипулировать новыми объектами из старых обратных вызовов.

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

Надеюсь, я описал проблему, которую я имею в сжатой и точной форме. Спасибо за любую помощь.

+1

Ответ от Juderb - это, вероятно, то, что вы ищете, но если у вас действительно аллергия на GUIDE и удобна с макетом GUI вручную, вы можете экспортировать весь рисунок/gui как файл '.m' (меню" Файл/Экспорт ... "). Ожидайте немного работы по перенастройке и объединению вещей, но после этого вы можете сказать «файл» .fig и все, что содержится в файле .m'. – Hoki

ответ

1

Если я правильно понимаю, вы добавляете элементы GUI в функцию открытия, а затем добавляете ручку к этим объектам в структуру handles, в _OpeningFcn.

Если это так, любые изменения, внесенные вами в handles, будут рассматриваться как чисто местные. Для того, чтобы применить эти изменения и сделать их доступными в течение всего объема графического интерфейса пользователя, просто выполнить следующую команду в конце вашего метода _OpeningFcn:

function YourGui_OpeningFcn(hObject, eventdata, handles, varargin) 
    ... 
    handles . button = uicontrol ('Style' , 'pushbutton' , ... 
            'String' , 'My Fancy Button', ... 
            'Position' , [315,220,70,25]); 
    ... 

    guidata (hObject , handles) 
end 

Если вы пренебрегаете использование guidata в конце функции, изменения не будут придерживаться.

+1

С уважением, Юдерб, это именно то, что мне нужно. :) – FliXFantatier