プログラムによるアプローチを使用して作成した Matlab の GUI があります。6 つのスライダーがあり、そのうちの 1 つを動かして、もう一度クリックしたかのように他のスライダーを更新できるようにしたいのですが、同じ場所にとどまります。set() 関数を使用する必要があると思います。matlab でこれを行う関数は既にありますか? 私は周りを見回してきました。私を正しい方向に向けるための提案や何かはありますか?
1627 次
1 に答える
1
を使用している場合は、各コールバックで使用可能な変数guide
から他のスライダーにアクセスできます。handles
Value
それらのプロパティを設定します。
function Slider1_CallBack(hObj,evt,handles)
set(handles.Slider1,'Value',10);
set(handles.Slider2,'Value',10);
% etc..
end
プログラムで使用している場合は、handles
手動で保存できます。
function main
handles.Figure1 = figure(..);
handles.Slider1 = uicontrol(...);
handles.Slider2 = uicontrol(...);
guidata(handles.Figure1,handles);
end
スライダーのコールバックは次のようになります。
function Slider1_CallBack(hObj,evt)
handles = guidata(hObj);
set(handles.Slider1,'Value',10);
set(handles.Slider2,'Value',10);
% etc..
end
編集UI を作成する際の良い方法は、GUI ロジックを実際のデータから分離することです。常にデータを変更し、updateGUI
ルーチンを呼び出します。
したがって、次のようにプログラムを書くことができます。
function main
handles.gui.Figure1 = figure(..);
handles.gui.Slider1 = uicontrol(...);
handles.gui.Slider2 = uicontrol(...);
handles.data.x = 1;
guidata(handles.Figure1,handles);
end
function UpdateGui(handles)
%Based on the data, update the GUI
set(handles.Slider1,'Value',handles.data.x);
set(handles.Slider2,'Value',handles.data.x+1);
end
コールバックは次のようになります。
function Slider1_CallBack(hObj,evt)
handles = guidata(hObj);
handles.data.x = handles.data.x + 1;
UpdateGui(handles);
guidata(hObj,handles);
% etc..
end
于 2012-02-14T23:14:38.337 に答える