0

(グローバル変数として公開されている関数ハンドルを使用して) GUI/GUIDE ファイルでサブ関数を呼び出そうとすると、GUIDE Figure で軸を特定の軸に設定しても、常に新しい軸が作成されます。なぜこれが起こっているのか誰にも分かりますか?ガイド コードは次のとおりです。

###############################################################
function varargout = demo(varargin)
  % Begin initialization code - DO NOT EDIT
  gui_Singleton = 1;
  gui_State = struct('gui_Name',       mfilename, ...
                     'gui_Singleton',  gui_Singleton, ...
                     'gui_OpeningFcn', @demo_OpeningFcn, ...
                     'gui_OutputFcn',  @demo_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 demo_OpeningFcn(hObject, eventdata, handles, varargin)
  handles.output = hObject;

  % Update handles structure
  guidata(hObject, handles);

  global myhandles updateFunction;
  myhandles = handles;
  updateFunction = @update;

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

function pushbutton1_Callback(hObject, eventdata, handles)
  update();

function update()
  global myhandles;

  axes(myhandles.axes1);
  plot(1:2,1:2);

###########################################################################

そして、私がそうするとき(上記のファイルの外):

global updateFunction;
feval(updateFunction)

GUI Figure ではなく、新しく作成された Figure ウィンドウに常にプロットが表示されます。なぜこうなった?

4

2 に答える 2

2

私が最初に試みることは、関数の更新を次のように置き換えることです。

function update
  global myhandles;
  plot(myhandles.axes1,1:2,1:2);

これにより、指定された軸にプロットするようにPLOT関数に明示的に指示されます。それが機能しない場合は、axesの'NextPlot'プロパティを'add'に設定してみてください(おそらくdemo_OpeningFcnで):

set(myhandles.axes1,'NextPlot','add');
于 2009-06-18T02:27:30.960 に答える