2017-12-08 3 views
0

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 

答えて

1

デフォルト・ガイド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. 

あなたが使用しようとしている構文は、あなたのGUIにローカルなコールバックを呼び出すために予約構文で、どの最初の入力でstr2funcコールを使用している理由です。 str2funcコールを削除するか、入力構文を変更して、GUIDEが設計したものとは別の出力を受け入れるようにしてください。

+0

これまで私がどのように問題を回避したかを思い出させてくれました。私は、古いGUIDEベースのGUIの1つを確認しました。これまではGUIへの入力はセル配列でした。そのようにすると、 'str2fun'呼び出しをバイパスします。なぜなら、' char'ではないからです.OutputFcnには入力がvarargin {1}として表示されます。 –

関連する問題