Matlab GUI 设计(3):edit、slider、table数据同步
在GUI 的設計中,數據的直接輸入有兩種方式:edit 和 slider,他們之間經常需要同步,即表示同一個變量的 string值或者value值,當edit改變時,slider 跟著改變;同樣當slider改變時,edit 也隨著改變,并實時顯示在 table 中。
1、根據GUIDE 建立GUI。打開GUI,在空白區域放置三個 uicontrol :slider、edit、table,如圖所示。為了編輯的方便,把他們放在一個 panel 上。
三個控件的tag 分別是:slider1、edit1、UItable1;其中slider 的 屬性中,Max:100,Min:-100;edit 的 string 值設為:num;
table 的data 中,設置 行、列的顯示名。
2、編輯 M 文件。打開對應的M文件,可以看到系統自動生成了四個函數框架: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]);利用函數 get 來取得句柄中的數據值,利用 set 倆改變句柄中數據的值,并利用global 在不同的控件中共享數據。
完整的回調函數如下:
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程序運行的結果如下:
總結
以上是生活随笔為你收集整理的Matlab GUI 设计(3):edit、slider、table数据同步的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LaTEX、 Aurora、 markd
- 下一篇: Matlab GUI 基础(2):M文件