0

私は自分のプロジェクトGUIDEの作成に使用しています。GUIMATLAB

ボタンのコールバックの 1 つで、関数を呼び出します。

[Name]= otherFunction(inputVariable);

set(handles.name,'String',Name);

その関数からの出力を受け取った後、名前ラベルを Name の値に設定します。関数内から設定することはできますか?その関数が GUIData にアクセスできるようにするにはどうすればよいですか?

その関数内から set/get を使用しようとしましたが、機能しないようです。

または、「ハンドル」をグローバルに利用できるようにする方法はありますか?

4

1 に答える 1

3

空白の GUI から始めて、単純にプッシュボタン (「btnTest」としてタグ付け) を追加すると、次のコードが正常に機能します。

%% --- Executes on button press in btnTest.
function btnTest_Callback(hObject, eventdata, handles)
%[
    changeName(handles);
%]

%% --- Inner function
function [] = changeName(handles)
%[
    set(handles.btnTest, 'String', 'toto'); 
%]

したがって、おそらくコードに何か問題があります。

「handles」構造を「changeName」関数に渡さない場合 (つまり、ハンドルをグローバルに使用できるようにする場合)、次のようにできます。

%% --- Executes on button press in btnTest.
function btnTest_Callback(hObject, eventdata, handles)
%[
    changeName();
%]

%% --- Inner function
function [] = changeName()
%[   
    handles = guihandles(); % recover handles for current figure
    set(handles.btnTest, 'String', 'toto'); 
%]

ただし、「ハンドル」を直接渡すよりもはるかに遅くなります。

于 2011-04-05T21:06:27.997 に答える