Matlab程序入門GUI項目之二:簡單科學計算器

今天是入門matlab語言的第八天,總是糾結在matlab語言的矩陣和其他編程語言的數據結構之間的轉換;還是沒啥頭緒,可能是受到java、python等常規語言的編程習慣的限制,在我看來覺得有點像多維數組的實現,可是它的存儲結構又有點困惑,所以還是繼續慢慢漸悟吧!!保持手感,繼續GUI編程:
簡單科學計算器的實現:效果圖:
這裏寫圖片描述

步入正題:
第一步依然完成layout佈局(代碼控制或者可視化拖拽)比較簡單

第二部:各個控件的callback函數的編寫:
在matlab中對GUI的編程很快捷,類似於Android的按鈕一樣,數字按鈕每一個獲取編輯框的內容,並進行字符的拼接,strcat();
實例:按鈕1:注意每一個控件的標識:tag一一對應

function num1_Callback(hObject, eventdata, handles)
% hObject    handle to num1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
textString = get(handles.editshowresult,'String');
textString =strcat(textString,'1');
set(handles.editshowresult,'String',textString)

其他的按鈕以此類推;另外就是重點的按鍵實現還有“”清空“、‘退格’、“等於”這三個符號的實現
1.清空:可以先獲取編輯框的內容,再進行賦值爲空字符串即可;

function clear_Callback(hObject, eventdata, handles)
% hObject    handle to clear (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
set(handles.editshowresult,'String','')

2.退格:同樣先獲取編輯框已有內容和長度,進行字符減1的操作之後再進行賦值操作;

function back_Callback(hObject, eventdata, handles)
% hObject    handle to back (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
textString = get(handles.editshowresult,'String');
n=length(textString)
t=char(textString)
textString=t(1:n-1)
set(handles.editshowresult,'String',textString)

3.等於:等於符號這個是一個很大的亮點啊在python中我們知道eval()函數對輸入的字符串進行數值計算操作,這裏同樣是一樣呢使用,想想Android 中的計算器,等於號的計算操作,那可是給個大活哈,即使是GitHub的開源輪子

% --- Executes on button press in equal.
function equal_Callback(hObject, eventdata, handles)
% hObject    handle to equal (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
textString = get(handles.editshowresult,'String');
result =eval(textString);
set(handles.editshowresult,'String',result)

最終計算效果:
這裏寫圖片描述
這裏寫圖片描述

平方:
這裏寫圖片描述
這裏寫圖片描述

總結:matlab的用戶界面設計只要是保存爲m文件和fig圖像文件;兩者分離開,也體現出一點界面與代碼分開的思想;比較來說就是有點順手,同時也真正體會到matlab語言的健壯與科學計算的優越性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章