Использование функций для обратных вызовов графического интерфейса - PullRequest
0 голосов
/ 07 мая 2011

Я использую GUIDE для создания интерфейса, в котором функция [x, y] = function (a, b, c, d) будет выполняться при нажатии кнопки.У меня проблемы, чтобы заставить это работать.GUIDE создает автоматически сгенерированную функцию с синтаксисом varargout = LineasA (varargin).

Я вызываю GUI с использованием этого синтаксиса [x, y] = LineasA (a, b, c, d), но получаю много ошибоки я не могу их предпринять, надеюсь, вы, ребята, можете мне помочь.

я получаю следующие ошибки:

Error in ==> LineasA>LineasA_OutputFcn at 73
varargout{1} = handles.output;

??? Error using ==> feval
Output argument "varargout{2}" (and maybe others) not assigned during call to
"C:\Users\ZeTa\Documents\MATLAB\ImagenB\LineasA.m>LineasA_OutputFcn".

Error in ==> gui_mainfcn at 263
        [varargout{1:nargout}] = feval(gui_State.gui_OutputFcn, gui_hFigure, [],
        gui_Handles);

Error in ==> LineasA at 40
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

Error in ==> ImagenB at 17
[MatrizB,Cuenta]=LineasA(Cuenta,waveformObj,channelObj,MatrizB);

Tnxs заранее ..

Oz

1 Ответ

0 голосов
/ 14 ноября 2011

Вы должны четко понимать, где вы получаете входы для этой функции и куда вы хотите направить выходы. Это правильное кодирование для хранения входов и выходов в структуре дескрипторов, которая передается в обратный вызов. Кроме того, правильная структура обратного вызова:

LineasA(hObject, eventdata, handles)

Однако, если вы настаиваете на вызове и хранении из базовой рабочей области, вы можете сделать следующее:

LineasA(hObject, eventdata, handles)
    % grab values from base workspace
    Cuenta = evalin('base', 'Cuenta');
    waveformObj = evalin('base', 'waveformObj');
    channelObj = evalin('base', 'channelObj');
    MatrizB = evalin('base', 'MatrizB');

    % the rest of your code

    % assign outputs
    assignin('base', 'MatrizB', matrizB);
    assignin('base', 'Cuenta', Cuenta);
end

Однако я рекомендую получать эти значения в структуре дескрипторов, а не использовать evalin и assignin, обычно это плохие методы кодирования.

...