我有一个包含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
这让我想到这样一个问题,假设上面链接中附带的帖子中描述的方法是正确的方法, 我在哪里放置此代码? (我甚至无法在他附在帖子上的示例文件中找到它...)
感谢帮助!
答案 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之前,您也可以启动任何功能。