GUIDE生成GUIに引数を渡そうとしています。これは動作しますが、警告がスローされます。引数をGUIDE GUIに渡すときの警告
inputTest('Passed In String')
警告:関数str2funcへの入力「文字列で渡されたが、」有効な 関数名ではありません。これにより、将来のリリースでエラーが発生します。
私は過去にGUIDE GUIに引数を渡していますが、これまでにこの警告メッセージが表示されたことはありません。しかし、私はMatlab 2016bには比較的新しいので、私が気づいていないものが変更されている可能性があります。私はドキュメンテーションで何も見つかりませんでした。
"初期化コード - DO NOT EDIT"自動生成セクションで警告が発生し、オプションの引数を渡すときにのみ警告が発生します。
これは2016bのバグですか、何か不足していますか?
下記の最小の例。 1つの編集ボックスのみを持つシンプルな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の1つを確認しました。これまではGUIへの入力はセル配列でした。そのようにすると、 'str2fun'呼び出しをバイパスします。なぜなら、' char'ではないからです.OutputFcnには入力がvarargin {1}として表示されます。 –