2012-04-07 3 views
2

Я два ГПИТЕ namesd masir и накрытый столом
накрытого стола GUI является суб GUI для masir (нажав кнопку на masir откроется накрытый столом) Чтобы получить доступ к данным masir в накрытом столе у ​​меня есть эти 2 строки коды:соотношения между основным графическим интерфейсом и субтропической графический интерфейс

masirGUIhandle = masir; 
masirGUIdata = guidata(masirGUIhandle); 

но работаешь эти 2 линии будет работать функции открытия masir как я работаю в накрытом столе (при открытии функции я установить некоторые начальные значения для моих переменных, и теперь я не хочу, чтобы те начальные значения, мне нужно изменить значения для моих переменных), поэтому я не хочу, чтобы OpenFcn графического интерфейса masir был запущен, мне просто нужно иметь доступ к данным masir в SetOut . я делаю, чтобы исправить проблему?

Может ли кто-нибудь помочь мне в этом ответе и объяснить мне больше?

I use this easy way for data sharing between GUIs 
%In the end of OpeningFcn of Main GUI 
setappdata(0,'HandleMainGUI',hObject); 
%When you want to edit shared data you must get the handle 
HandleMainGUI=getappdata(0,'HandleMainGUI'); 
%write a local variable called MyData to SharedData, any type of data 
setappdata(HandleMainGUI,'SharedData',MyData); 
%get SharedData and save it to a local variable called SomeDataShared 
SomeDataShared=getappdata(HandleMainGUI,'SharedData'); 
Don't forget to clean up the data shared in the CloseReqFcn of you main GUI 
HandleMainGUI=getappdata(0,'HandleMainGUI'); 
rmappdata(HandleMainGUI,'MySharedData') %do rmappdata for all data shared 
Remember that your GUIs might try to getappdata that doesn't exist, you should first  test if it does exist 
if (isappdata(0,'HandleMainGUI') & isappdata(HandleMainGUI,'MySharedData')) 
%get, set or rm appdata 
else 
%do something else, maybe loading default values into those variables 
end 

Расскажите мне больше aboute, какая строка кода должна быть написана в MainGUI и какая линия должна быть записана в SubGUI?
И скажите, что означает ответчик CloseReqFcn?

+0

Можете ли вы расширить пример? Не совсем ясно, в чем проблема. – bdecaf

+0

Мой вопрос точно такой же, как этот вопрос: [link] (http://www.mathworks.fr/matlabcentral/answers/338-how-to-pass-data-from-one-gui-to-another), но Мне нужна дополнительная помощь, потому что предложенный ответ не работает – sepideh

ответ

2

Хорошо, позвольте мне кратко изложить, как я вижу проблему.

Вы хотите прочитать данные от SetOut без его создания? Это невозможно, так как данные будут созданы при создании окна.

Приятный и систематический путь вокруг будет делать это объектно-ориентированный язык (см Model-View Controller Pattern) вы можете более или менее скопировать пример из моего ответа here (пример для события - наблюдатель)


Но если вы» хотел бы придерживаться вашего кода у меня есть некоторые идеи:

  • Если вы не хотите, чтобы окно, чтобы показать, вы можете установить его невидимым с set(theGUIhandle,'Visible','off')

  • Пока окно не закрыто вы можете получить данные с getappdata(theGUIhandle)

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

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