MATLAB - GUI加载后自动启动函数

时间:2015-09-17 20:55:55

标签: matlab matlab-guide

我有一个包含GUI的Matlab应用程序。 我现在正在尝试自动化一些操作,我需要在GUI加载后立即调用一个函数,而不需要任何人在循环中。 (基本上模拟人类按钮点击......)

我尝试从“_OpeningFcn”和“_OutputFcn”调用所需函数但没有成功。

我也尝试过这个链接,但它不起作用:( http://www.mathworks.com/matlabcentral/answers/161545-call-callback-without-mmouse

在GUI完全加载后如何以编程方式调用函数的任何其他想法?

谢谢!

EDIT1: 据我所知,如果我想调用该函数,那么我应该将其置于其中 “EnergyData_OutputFcn”。 所以,这就是它的样子:

function varargout = EnergyData_OutputFcn(hObject, eventdata, handles)
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure

hGuiFig = findobj('Tag','btnReportGeneration');
EnergyData('btnReportGeneration_Callback',handles.btnReportGeneration,[],handles);
varargout{1} = handles.output;

问题是这个函数是递归调用的(我可以在调试时看到它),我最终得到这个错误信息:

Maximum recursion limit of 500 reached. Use set(0,'RecursionLimit',N)
to change the limit.  Be aware that exceeding your available stack space
can
crash MATLAB and/or your computer.

Error in genvarname>isCellString

这让我想到这样一个问题,假设上面链接中附带的帖子中描述的方法是正确的方法, 我在哪里放置此代码? (我甚至无法在他附在帖子上的示例文件中找到它...)

感谢帮助!

1 个答案:

答案 0 :(得分:0)

使用指南自动创建时,您应该在GUI代码中包含此部分吗? (您可以使用指南创建一个简单的GUI,并找出其他方式)

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @V2Gsim_gui_OpeningFcn, ...
                   'gui_OutputFcn',  @V2Gsim_gui_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT 

然后打电话(在我的情况下)

function V2Gsim_gui_OpeningFcn(hObject, eventdata, handles, varargin)

即使在打开GUI之前,您也可以启动任何功能。