matlab guide對話方塊+滑動條+彈出式選單+列表框的使用
阿新 • • 發佈:2018-12-21
文章目錄
前言
我覺得gui無非就是給程式加了件衣服,其實具體的程式我們都會寫,我們唯一不明白的是那幾個部分資料之間的傳遞,以及怎麼獲取資料處理資料。
matlab資料傳遞概觀
在GUI的各個控制元件之間進行資料傳遞,可以採用以下兩種方法,利用結構體handles和控制元件的UserData屬性。
結構體handles儲存了GUI的資料。當在執行GUI時,M檔案會自動產生結構體handles,其中儲存了所有GUI物件的資料,可以看作是一個數據的容器。使用者可在handles中找到所有控制元件的資訊。handles在各各控制元件的callback之間傳來傳去。
通過在結構體handles中新建欄位並放置資料,可以實現資料在各個控制元件之間共享
handles.a=a;
guidata (hobject, handles); %更新
在結構體handles中新建欄位a,並儲存變數a的值然後利用函式guidata()更新handles中的資料。則在任何需要獲取該變數值的地方,可以使用如下語句:
a=handles.a;
還可以採用控制元件的UserData屬性來儲存資料。每個GUI物件都有UserData屬性,可以用來儲存任何型別的資料。使用者可以通過函式get()獲取資料,通過函式set()設定資料。除此之外,還可以將變數用global設定為全域性變數,從而實現資料的共享。
對話方塊建立
開啟GUIDE,新建一個button,然後執行找回調函式,新增如下程式碼
function pushbutton1_Callback(hObject, eventdata, handles)
choice=questdlg('你要關閉嗎?','關閉對話方塊','Yes','No','No')%問題對話方塊,預設為No
switch choice,
case 'Yes'
delete(handles.figure1);%關閉視窗
return;
case 'No'
return;
end
利用滑動條實現顏色調控
SliderStep 為[0.01 0.1] :一個是小步長,是點選slider兩端的箭頭移動的步長;一個是大步長,是點選slider時移動的步長
function slider1_Callback(hObject, eventdata, handles)
val=get(hObject,'value');%通過get獲取滑動條的當前值
set(handles.text1,'BackgroundColor',[val val val]);
效果:
利用彈出式選單選擇並輸入文字框
function popupmenu1_Callback(hObject, eventdata, handles)
val=get(hObject,'value');%獲取數值,從上到下依次1到4
str=get(hObject,'String');%獲取字串,這裡是選單所有的字串,相當於存到了字串數組裡
switch val
case 1
set(handles.edit1,'String','');%輸入到可編輯文本里
case 2
set(handles.edit1,'String',str{2});
case 3
set(handles.edit1,'String',str{3});
case 4
set(handles.edit1,'String',str{4});
end
效果:
利用列表框選擇並輸入文字框
function listbox1_Callback(hObject, eventdata, handles)
sel=get(gcf,'selectiontype');
if strcmp(sel,'open')%如果雙擊滑鼠
str=get(hObject,'String');%獲取字串
n=get(hObject,'value');%獲取數值
set(handles.edit1,'string',str{n});%在靜態文字中顯示
end;
效果: