函數的再認識
輸出函數
輸出函數是將執行後之狀態輸出至指令行。也可以利用這項功能將一變數值再傳遞給另一個gui指令。
經過guide自動產生之輸出函數很簡單,只有這樣一行:
function varargout = my_gui_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
因此,若gui本身未被遮斷,其輸出內容應為gui之握把,其內容置於handles.output內。若要獲得不同於上述輸出項時,則可以利用下列方式取得:
- 在啟動函數中增加uiwait指令,令M檔案執行時能暫停,直到使用者啟動gui中之元件,例如按鈕。
- 在gui中之期待回應之每一元件中,令其回叫函數更新handles.output之值,並執行uiresume之指令。
handles.output = 'Yes';
guidata(hObject, handles);
uiresume;
此時,當gui程式被呼叫時,其執行型式如下:
>>OUT = my_gui
輸出參數varargout也是細胞矩陣,因此可以包括任何型式及數目的輸出項。guide之輸出預設備為handles.output。若要產生第二種輸出型式,則可作如下之添加:
varargout{2} = handles.second_output;
上述值之設定可以在任何回叫函數中為之,然後用guidata指令儲存。上述名稱並非一成不變,你可以選擇自己喜歡的參數名稱。
回叫函數
回叫函數在gui中是最重要的一環,因為元件之作動與呼叫程式藉此相互連繫。其函數名稱之設定係以元件之標籤為參數,例如一按鈕之Tag等於print_button時,其回叫函數之型式為:
function print_button_Callback(hObject, eventdata, handles)
輸出入參數
- 呼叫gui之檔名有幾種方式,其功用自有不同,有時可以利用,設程式名稱為demo_gui:
- 直接呼叫demo_gui:沒有引數,直接打開demo_gui程式。
- 呼叫h=demo_gui:打開demo_gui,得其握把h。
- 呼叫demo_gui('Property',Value,...):指令中為圖屬性,打開demo_gui使用輸入之屬性對,屬性對可以使用一對以上。
- 呼叫demo_gui('demo_function',hObject, evendata, handles,...):呼叫次函數demo_function。
- 呼叫demo_gui('Velocity',300):打開demo_gui,但傳遞['Velocity',300]引數向量至啟動函數。
沒有留言:
張貼留言