赞
踩
出于兴趣爱好自学了一段时间的MATLAB,然后学习自制了一个属于自己的一个计算器,现在将我的第一个GUI分享给大家。(MATLAB版本为R2019a)
①首先在MATLAB中的命令行窗口输入guide,之后会出现如下界面,
点击第一个Blank GUI(Default)便可出现GUI编辑界面,如下图所示
之后就可以开始布局属于自己的计算机页面了。
有了之前的界面,我们就可以开始布局属于我们的计算器了,首先给大家看看我的界面。
下面手把手教大家怎么创建属于自己的机界面。
****第一步:可编辑文本(有些同学是英文版本的,可以自己翻译一下找到所对应的按钮)
点击可编辑文本,随后自己拖动(大小可自己改变),就会出现如下一个长条(我的界面右边那个)。
然后双击这个文本,便可以看到下图。
在这个里面,我们主要注意四点:①BackgroundColor,这个可以改变文本框的背景颜色,可以调整你喜欢的颜色。
②FontSize,这个可以改变你的显示字体的大小默认是8.0,你可以改成16.0,直接在右边数字上修改就行了。
③String,这个是可以修改的,在我的界面中我直接将可编辑文本这五个字删除了,可以根据你喜欢的来。
④Tag(标签):这个最重要了,因为这个表示的是这个可编辑文本框的系统中的名字,等会儿编程的时候要用到。
讲到这里,相信大家的可编辑文本框已经弄好了。
****第二步:设置普通按钮
像上一步一样,大家可以点击普通按钮按键,然后放置,可以根据自己的喜好调整位置,也可以根据自己想要的功能添加。
你想要几个按钮你就自己点几个按钮,然后就可以修改每个按钮的名字了,(我的建议是你点一个按钮你就修改一下,免得弄混了)。双击你放置的按钮,会出现如下界面。
在这里你可以修改比如,我修改FontSize,还有BackgroundColor,以及String(按钮名字)。
比如我把背景颜色换成了青色,字体设置成了16.0,String那一块设置成了‘10’。如下图所示。
点击运行图窗这个按钮,会得到以下界面。
这个是我的界面,点击按钮之后你会发现文本框里什么都不会显示,这是因为我们还没有编写代码,但是你每一个按键都能按动,计算器的雏形已经开始显现,接下来就是编写程序了。回到你设计好的计算器的界面,
用鼠标右键点击数字1,将光标移到查看回调会出现如下界面,
点击Callback,会出现如下代码:
% --- Executes on button press in pushbutton22.
function pushbutton22_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton22 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
这些都是系统自动生成的,我们之所以在运行之后按下按钮没有显示数字就是因为我们没有在这个函数中编写相应的代码。
(pushbutton22是我的界面中数字‘1’按钮的名字,应该每个人的都不一样),我们在这五行代码中,加上下面三行代码,
textString = get(handles.edit1,'String');
textString = strcat(textString,'1');
set(handles.edit1,'String',textString);
再回到界面去运行你所设计的界面,你会发现,你按下按钮‘1’后,会在文本框中中显示1,你按下多少次,就会显示多少次1。如下图。
按钮1的完整代码如下:
% --- Executes on button press in pushbutton22.
function pushbutton22_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton22 (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.edit1,'String');
textString = strcat(textString,'1');
set(handles.edit1,'String',textString);
下面来解释一下:首先需要声明的是:handle是一个结构体,同一个.fig下的所有控件,均可挂在handle下。
textString = get(handles.edit1,‘String’);
这句代码的意思是获取可编辑文本框的字符串,并保存在textString中,至于edit1我上面也解释了,点击可编辑文本框,你的可编辑文本框中Tag是什么,这里就打上什么,比如有可能是edit5。
textString = strcat(textString,‘1’);
先明白strcat函数的定义:strcat 即 Strings Catenate,横向连接字符串。
这句代码的意思是将textString中的字符串内容和‘1’连起来,比如你textString中有一个1,在按下按钮1,这时候这个函数就会把两个1连起来,变成11.
set(handles.edit1,‘String’,textString);
这句代码的意思是将textString中的内容以字符串的形式显示在edit1上,也就是显示在可编辑文本框上。
在这个基础上,我们就会编写按钮0-9的代码了,只需要重复上述操作,再将代码中的数字‘1’,改成相应按钮的数字就可以了。比如按钮2的代码为:
% --- Executes on button press in pushbutton23.
function pushbutton23_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton23 (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.edit1,'String');
textString = strcat(textString,'2');
set(handles.edit1,'String',textString);
之后再运行界面,按下相应的按钮,比如从按钮1按到按钮9,便会得到以下界面:
加减乘除(±*/)、小数点(.)、平方(^)的代码如下图所示:
% --- Executes on button press in pushbutton31.
function pushbutton31_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton31 (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.edit1,'String');
textString = strcat(textString,'+');
set(handles.edit1,'String',textString);
跟按钮0-9一样的改法,只需要将其中的符号换一下就好了,比如平方的代码如下:
% --- Executes on button press in pushbutton37.
function pushbutton37_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton37 (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.edit1,'String');
textString = strcat(textString,'^2');
set(handles.edit1,'String',textString);
*然后讲一下按钮‘=’的代码,代码如下所示: *
% --- Executes on button press in pushbutton36.
function pushbutton36_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton36 (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.edit1,'String');
ans = eval(textString);
set(handles.edit1,'String',ans);
第一句是一样的,获取编辑框中的字符。
第二句,大家可以在命令行窗口输入help eval获取到eval函数的使用方式,这里我就不贴出来了,通俗易懂地说,就是eval函数会直接执行eval()括号中的内容,比如你再命令行打上eval(‘8+9’),你会得到ans = 17,这里的代码的意思是我得到textString中的内容后,直接丢到eval的扩上中,然后会给我们直接执行括号里面的内容,进行计算。
第三句话的意思就是将结果ans以字符串的方式显示在文本编辑框中。
按钮C(clear清除)的代码:
% --- Executes on button press in pushbutton39.
function pushbutton39_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton39 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
set(handles.edit1,'String','');
就是将文本框设置一个空格字符。
按钮Quit(停止退出)的代码:
% --- Executes on button press in pushbutton40.
function pushbutton40_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton40 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
close(gcf);
直接关掉当前图形句柄。
BACK(退回)按钮的代码:
% --- Executes on button press in pushbutton38.
function pushbutton38_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton38 (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.edit1,'String');
str = char(textString);
value = length(str);
textString = str(1:value-1);
set(handles.edit1,'String',textString);
第一句代码依旧是获取edit上字符串的内容
第二句代码是将字符串通过char()函数变成字符向量,通过MATLAB中的命令行窗口输入help char可以得到如下信息
A =
“Pythagoras”
使用 char 函数将 A 转换为字符向量。MATLAB 可以显示带有单引号的字符向量。
C = char(A)
C =
'Pythagoras’
第三句代码是获取str的长度。
第四句是显示字符向量的1到(value-1)位,比如你按下123三个按钮,再按一下BACK按键,可以看到文本框中只有12了。
第五局依旧是将textString的内容转换成字符串显示到文本框中。
MATLAB-基于GUI的简易计算器的实现
谢谢大家抽空看我写的这篇文章,希望大家一起学习,一起进步,这篇文章有什么不足之处,请大家加以批评指正和补充,谢谢大家!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。