【问题标题】:Multiple callbacks in a MATLAB GUIMATLAB GUI 中的多个回调
【发布时间】:2017-09-24 11:30:25
【问题描述】:

我正在尝试将字符向量回调转换为函数句柄。但是,我正在调用多个回调,我假设我可以创建一个带有匿名函数的单元格数组?

代码如下:

guiel.hPB(2)=uicontrol(guiel.cPanel(2),'Style','PushButton','Units','pixels',...
        'TooltipString',guiel.plotTt,...
        'Position',[cnst.bhspace 3*cnst.bvspace+2*cnst.bheight cnst.bwidth cnst.bheight],...
        'String','Run Simulation','fontsize',10,'FontWeight','Demi',...
        'CallBack','eval(codeblk.CLOSE_MDL_FCN); set(guiel.cPanel(4),''Visible'',''off'');set(guiel.APPWINDOW,''Resize'',''off''); primePlot;',...
        'Enable','off');

我想要做的是将codeblk.CLOSE_MDL_FCN 写入函数句柄,其余的是匿名函数句柄?但是,我不确定如何做到这一点。

codeblk.CLOSE_MDL_FCN = ['if  ~isempty(find_system(''Name'',vars.simfilename))'...
                     'vars.simtime = str2num(get_param(vars.simfilename,''StopTime''));'...
                     'set(guiel.hSimtime,''String'',num2str(vars.simtime));'...
                     'save_system(vars.simfilename);'...
                     'close_system(vars.simfilename);'...
                     'end'];

【问题讨论】:

    标签: matlab function callback matlab-gui


    【解决方案1】:

    creating a callback 使用function handle 的想法是,它是一个单个 函数来处理与 GUI 对象交互时的所有内容。使用cell array callback 是为了当您需要向函数传递额外数据时使用,而不是为了调用多个函数。以下是我建议您设计按钮回调的方式:

    guiel.hPB(2) = uicontrol(..., 'CallBack', @callback_hPB2, ...);
    

    然后你会定义两个nested functions:

    function callback_hPB2(~, ~)
      close_fcn();
      set(guiel.cPanel(4), 'Visible', 'off');
      set(guiel.APPWINDOW, 'Resize', 'off');
      primePlot();
    end
    
    function close_fcn
      if ~isempty(find_system('Name', vars.simfilename))
        vars.simtime = str2num(get_param(vars.simfilename, 'StopTime'));
        set(guiel.hSimtime, 'String', num2str(vars.simtime));
        save_system(vars.simfilename);
        close_system(vars.simfilename);
      end
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-25
      • 2018-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多