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