Matlab GUI 设计(3):edit、slider、table数据同步
在GUI 的設(shè)計中,數(shù)據(jù)的直接輸入有兩種方式:edit 和 slider,他們之間經(jīng)常需要同步,即表示同一個變量的 string值或者value值,當(dāng)edit改變時,slider 跟著改變;同樣當(dāng)slider改變時,edit 也隨著改變,并實時顯示在 table 中。
1、根據(jù)GUIDE 建立GUI。打開GUI,在空白區(qū)域放置三個 uicontrol :slider、edit、table,如圖所示。為了編輯的方便,把他們放在一個 panel 上。
三個控件的tag 分別是:slider1、edit1、UItable1;其中slider 的 屬性中,Max:100,Min:-100;edit 的 string 值設(shè)為:num;
table 的data 中,設(shè)置 行、列的顯示名。
2、編輯 M 文件。打開對應(yīng)的M文件,可以看到系統(tǒng)自動生成了四個函數(shù)框架:slider1_Callback、slider1_CreateFcn、edit1_Callback、edit1_CreateFcn ,在 slider1_Callback 中添加代碼
global a;set(handles.edit1,'string',num2str(get(hObject,'value')));a=str2num(get(handles.edit1,'string'));set(handles.uitable1,'data',[a,2*a]);在edit1_Callback中添加代碼:
global a; set(handles.slider1,'value',str2num(get(hObject,'string'))); a=str2num(get(handles.edit1,'string')); set(handles.uitable1,'data',[a,2*a]);利用函數(shù) get 來取得句柄中的數(shù)據(jù)值,利用 set 倆改變句柄中數(shù)據(jù)的值,并利用global 在不同的控件中共享數(shù)據(jù)。
完整的回調(diào)函數(shù)如下:
function slider1_Callback(hObject, eventdata, handles)global a;set(handles.edit1,'string',num2str(get(hObject,'value')));a=str2num(get(handles.edit1,'string'));set(handles.uitable1,'data',[a,2*a]);function slider1_CreateFcn(hObject, eventdata, handles)% Hint: slider controls usually have a light gray background. if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',[.9 .9 .9]); endfunction edit1_Callback(hObject, eventdata, handles)global a; set(handles.slider1,'value',str2num(get(hObject,'string'))); a=str2num(get(handles.edit1,'string')); set(handles.uitable1,'data',[a,2*a]);function edit1_CreateFcn(hObject, eventdata, handles)% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white'); end程序運行的結(jié)果如下:
總結(jié)
以上是生活随笔為你收集整理的Matlab GUI 设计(3):edit、slider、table数据同步的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LaTEX、 Aurora、 markd
- 下一篇: Matlab GUI 基础(2):M文件