MAATLAB GUI——回调函数的设置(Callbacks)
目錄
1.回調函數創建步驟
1)命令窗口中輸入guide,創建一個新的GUI界面窗口
2)從左側的組件欄選擇需要的組件進行布局
3)選中一個組件,雙擊進行組件的屬性設置(Tag、String)
4)設置好屬性后,對需要執行回調函數的組件進行回調函數的設置,右鍵單擊組件,進入回調函數編輯
問題提出?
2.常見疑問解答hObject, eventdata, handles等
1)回調函數中的hObject, eventdata, handles是什么意思?
2)組件之間是通過什么進行聯系(handles),又是通過什么進行區別的(Tag)?
3)怎么調用其他組件中的數據?
4)怎么對組件設置指定的文本?
5)組件之間的數據是怎么進行共享的?
3.相關鏈接供參考
1.回調函數創建步驟
?????? 這里以一個四則運算為例進行說明,實現的功能是,在輸入數據后,按下相應的按鈕,會進行計算并且將結果呈現在相應的組件上
1)命令窗口中輸入guide,創建一個新的GUI界面窗口
2)從左側的組件欄選擇需要的組件進行布局
3)選中一個組件,雙擊進行組件的屬性設置(Tag、String)
4)設置好屬性后,對需要執行回調函數的組件進行回調函數的設置,右鍵單擊組件,進入回調函數編輯
% --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) set(handles.text6,'String',"+"); str1 = get(handles.edit1,'String'); % 獲得文本框的文本內容,此時為字符串類型 num1 = str2double(str1);% 將獲得的字符串轉換成數字類型 str2 = get(handles.edit2,'String'); % 獲得文本框的文本內容,此時為字符串類型 num2 = str2double(str2);% 將獲得的字符串轉換成數字類型 res = num1 + num2; set(handles.edit3,'String',res);問題提出?
是不是看到這里會很多疑問,比如:
1)回調函數中的hObject, eventdata, handles是什么意思?
2)組件之間是通過什么進行聯系,又是通過什么進行區別的?
3)怎么調用其他組件中的數據?
4)組件之間的數據是怎么進行共享的?
5)怎么對組件設置指定的文本?
當時我也有疑問,在一個帖子上看到了相關的回答,自己做了一些補充,大家可以看一下
?
2.常見疑問解答hObject, eventdata, handles等
1)回調函數中的hObject, eventdata, handles是什么意思?
答:
參考鏈接:https://blog.csdn.net/smf0504/article/details/51832374?_t_t_t=0.11396357929334044
***hObject是當前回調函數對應的GUI對象的句柄;
***eventdata為未定義的保留參數,即當前控件的相關變量;
***handles是當前GUI所有數據的結構體,包含所有GUI對象的句柄和用戶定義的數據;
***varargin在初始化時是空的,在觸發控件時,變成一個1X4的單元數組;
第一個varargin{1}表示觸發控件后所要執行的回調函數的函數名。
如果想把一個局部變量變成全局變量,一個有效的方法是將變量存在handles中,獲取handles結構體某個變量值的方法是x=handles.a。
2)組件之間是通過什么進行聯系(handles),又是通過什么進行區別的(Tag)?
答:
聯系——在同一個GUI內的所有數據都有一個共同的結構體,即handles,這個結構體在創建了gui保存后會自動進行創建,含有所有組件對象的句柄以及相應的數據,而組件也是通過這個聯系在一起的,使得所有在同一個gui的組件具有共同的結構體,不會和其他的gui的組件混淆在一起;
區別——在同一個handles下的每一個組件都有自己的屬性,而在屬性中有一個屬性是標簽名Tag,這是每一個組件獨一無二的名字,因此組件之間是通過標簽來進行區分彼此的;
作用——handles.標簽名,可以用于對指定標簽的屬性進行設置。
3)怎么調用其他組件中的數據?
答:
通過以下代碼進行組件文本的提取,提取到的是一個字符串類型
get(handles.組件的標簽名,"要設置的組件的屬性")示例: str1 = get(handles.edit1,'String')%返回字符串類型如果文本是數字組成的字符串,要想獲得數據類型,則需要使用到str2double()函數
num1 = str2double(str1)%得到一個雙精度浮點數4)怎么對組件設置指定的文本?
答:
通過以下代碼進行組件文本的設置
set(handles.組件的標簽名,"要設置的組件的屬性名","要設置的內容")示例: set(handles.text6,'String',"+")5)組件之間的數據是怎么進行共享的?
答:
同一個gui中組件的屬性和數據都會保存在handles結構體中,在回調函數下,對相應組件的文本進行提取,即可對其進行操作,
如本例中,按下加號按鈕,對兩個數進行加法計算,加法計算前,得先獲取編輯文本中的文本內容,在按下按鈕后進行加法操作
3.相關鏈接供參考
https://blog.csdn.net/smf0504/article/details/51832374?_t_t_t=0.11396357929334044
https://jingyan.baidu.com/article/363872ec0c7ae96e4ba16f00.html
https://blog.csdn.net/persistlzy/article/details/53309467
https://wenku.baidu.com/view/5fefde1076eeaeaad1f330d0.html
總結
以上是生活随笔為你收集整理的MAATLAB GUI——回调函数的设置(Callbacks)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [UE4]单机游戏改网络游戏,不完全清单
- 下一篇: Kafka配置JAAS