Вызов метода, определенного в работающем рисунке

У меня есть следующее UIFigure:

classdef gui < matlab.apps.AppBase
   ...
   function app = gui
      % Construct app
   end
   ...
   properties (Access = public)
      myFuncRef = @myFun
   end
   ...
   function myFun(app)
      % do something
   end
   ...
end

в котором я определил метод myFun,

Если фигура работает (то есть показывает окно), как я могу вызвать метод myFun из командного окна MATLAB? Я пробовал с

h = findobj(0, 'type', 'figure');
funcRef = get(h, 'myFuncRef');
funcRef(h);

но я получаю ошибку

Произошла ошибка во время выполнения симуляции, и симуляция была прервана. Причина: Функция 'subsindex' не определена для значений класса 'matlab.graphics.GraphicsPlaceholder'.

Заранее спасибо!

2 ответа

Попробуй это:

h = findobj(gcf,'-method','myFuncRef') 

или же

h = findobj(0,'class','gui') 

дайте мне знать, если это работает

Вероятно, проблема в том, что вы получаете только свою фигуру findobj(0, 'type', 'figure'), это просто Grahics Obejct, который управляется App-Class.

Во-первых, я хотел бы устранить ошибку, которую вы получаете. Причина в том, что h вернулся по вашему звонку findobj() пустой. Вместо этого вы должны использовать findall(0,'Type','Figure',...) [источник]

Я знаю, что это возможно, когда метод, на который вы ссылаетесь, static, Учитывая следующий класс:

classdef q45062561 < matlab.apps.AppBase

   properties (Access = public)
      myFuncRef = @q45062561.myFun
   end

   methods (Access = private, Static = true)
     function myFun()
        disp('This works!')
     end
   end

end

Затем выполнение следующего даст желаемый результат:

>> F = q45062561;
>> F.myFuncRef()
This works!

Заметки:

  1. Вместо того, чтобы найти ручку фигуры через findobjЯ просто храню его при создании.
  2. Модификаторы myFun неясны из вопроса, поэтому я не могу знать, подходит ли это решение в вашем случае.
  3. Лично я думаю, что лучше определить метод public и / или staticвместо использования ссылки на функцию, хранящейся в свойстве.
Другие вопросы по тегам