2017-12-08 3 views
0

GUIDE 생성 GUI에 인수를 전달하려고합니다. 이 작동하지만 경고를 throw합니다.GUIDE GUI에 인수를 전달할 때 경고

inputTest('Passed In String') 

경고 : STR2FUNC에 입력 "문자열 전달"는 유효한 함수 이름이 아닙니다. 이로 인해 향후 릴리스에서 오류가 발생합니다.

저는 과거에 GUIDE GUI에 인수가 전달 된 것을 알고 있으며 전에는이 경고 메시지를 본 적이 없었습니다. 그러나, 나는 Matlab 2016b에 대해 비교적 새로운 것이므로, 내가 인식하지 못하는 부분이 변경되었을 수 있습니다. 나는 문서에서 아무것도 찾지 못했습니다.

경고는 "초기화 코드 - 편집하지 마십시오"자동 생성 섹션에서 발생하며 선택적 인수를 전달할 때만 발생합니다.

2016b의 버그입니까? 아니면 놓친 것이 있습니까?

아래의 최소 예제. 하나의 편집 상자 만있는 간단한 GUI입니다.

function varargout = inputTest(varargin) 
% Begin initialization code - DO NOT EDIT 
gui_Singleton = 1; 
gui_State = struct('gui_Name',  mfilename, ... 
        'gui_Singleton', gui_Singleton, ... 
        'gui_OpeningFcn', @inputTest_OpeningFcn, ... 
        'gui_OutputFcn', @inputTest_OutputFcn, ... 
        'gui_LayoutFcn', [] , ... 
        'gui_Callback', []); 
if nargin && ischar(varargin{1}) 
    gui_State.gui_Callback = str2func(varargin{1}); % WARNING OCCURS HERE 
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 inputTest_OpeningFcn(hObject, eventdata, handles, varargin) 
handles.output = hObject; 
% Fill the box if the string is passed in. 
if nargin == 4 
    handles.edit1.String = varargin{1}; 
else 
    handles.edit1.String = 'Nothing Passed In'; 
end 
guidata(hObject, handles); 

function varargout = inputTest_OutputFcn(hObject, eventdata, handles) 
varargout{1} = handles.output; 

function edit1_Callback(hObject, eventdata, handles) 
function edit1_CreateFcn(hObject, eventdata, handles) 
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) 
    set(hObject,'BackgroundColor','white'); 
end 

답변

1

기본 가이드의 GUI 동작은 자동 생성 된 인라인 문서에 설명되어 있습니다 :

사용을 시도하고 구문이 GUI에 로컬 콜백을 호출하기위한 예약 된 구문이다

% ASDF MATLAB code for asdf.fig 
%  ASDF, by itself, creates a new ASDF or raises the existing 
%  singleton*. 
% 
%  H = ASDF returns the handle to a new ASDF or the handle to 
%  the existing singleton*. 
% 
%  ASDF('CALLBACK',hObject,eventData,handles,...) calls the local 
%  function named CALLBACK in ASDF.M with the given input arguments. 
% 
%  ASDF('Property','Value',...) creates a new ASDF or raises the 
%  existing singleton*. Starting from the left, property value pairs are 
%  applied to the GUI before asdf_OpeningFcn gets called. An 
%  unrecognized property name or invalid value makes property application 
%  stop. All inputs are passed to asdf_OpeningFcn via varargin. 
하는 첫 번째 입력에서 str2func 호출을 사용하는 이유입니다. str2func 호출을 제거하거나 입력 구문을 변경하여 GUIDE가 설계된 것보다 다른 출력을 허용하십시오.

+0

이전에이 문제를 해결하는 방법을 상기시켜 줬습니다. 나는 구형 GUIDE 기반 GUI 중 하나를 확인했다. 과거에는 GUI에 대한 입력이 셀 배열이었습니다. 그렇게하면'str2fun' 호출을 우회하게됩니다. 왜냐하면'char'가 아니기 때문입니다. 입력은 여전히 ​​사용하기 위해 OpeningFcn에 varargin {1}로 표시됩니다. –

관련 문제