1. 程式人生 > >matlab guide對話方塊+滑動條+彈出式選單+列表框的使用

matlab guide對話方塊+滑動條+彈出式選單+列表框的使用

文章目錄

前言

我覺得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;

效果:
在這裡插入圖片描述