Matlab gui教程0x3-GUI回调函数(callback)代码

5,769次阅读
没有评论

共计 2098 个字符,预计需要花费 6 分钟才能阅读完成。

在保存GUI程序时,Matlab会自动生成.fig和.m文件,其中的.m就是我们现在要操作的对象。

我们就是M文件中添加控件的回调函数相应用户的操作!这也是GUI编程的核心内容,它要求你必须掌握Matlab基本编程以及图形句柄语句!

打开.m文件,发现里面有很多function的代码,看得我们眼花缭乱,呵呵,不要胆怯!本教程是初级教程, 我们只涉及里面的callback,其他的我们可以暂时置之不理!至于其它的我们以后的教程中对做相关介绍!

在正式讲解之前,一个小使用技巧,Matlab Editor(代码编辑器)工具栏显示函数按钮 Matlab gui教程0x3-GUI回调函数(callback)代码 ,可以让我们快速跳转我们需要的函数位置!这个在.m内容很多的时候很有用哦!

1、在Editor中工具栏的函数Show Function中选择input1_editText_Callback

Matlab gui教程0x3-GUI回调函数(callback)代码

或者右击tag为input1_editText的编辑文本框,View Callback→Callback

Matlab gui教程0x3-GUI回调函数(callback)代码

2、此时光标会跳转到.m文件的function input1_editText_Callback处,方便我们直接编辑

  1. function input1_editText_Callback(hObject, eventdata, handles)
  2. % hObject    handle to input1_editText (see GCBO)
  3. % eventdata  reserved – to be defined in a future version of MATLAB
  4. % handles    structure with handles and user data (see GUIDATA)
  5. % Hint: get(hObject,’String’) returns contents of input1_editText as text
  6. %        str2double(get(hObject,’String’)) returns contents of
  7. %        input1_editText as a double

复制代码

在上面代码下添加如下MATLAB代码

  1. % handles 包含figure中所有图形对象句柄的结构体,如果我们想引用tag为mytag的控件,使用handles.mytag
  2. % set/get 函数是用来设置/获取某个控件属性
  3. % 使用get命令获取第一个加数,并将它转换成数值
  4. input = str2num(get(hObject,’String’)); % string属性是字符串,所以必须转换成数值
  5. % 检验输入是否为空,是则将它置为0
  6. if (isempty(input))
  7.      set(hObject,’String’,’0′)
  8. end
  9. % 保存handles结构体,只要在handles结构体有改变时,才需要保存
  10. guidata(hObject, handles); % 这里由于handles没有改变,故这里其实没有必要,但是为了避免潜在的不必要麻烦,建议在所有Callback最后都添加该命令

复制代码

3、为input2_editText_Callback添加完全相同的代码

4、编辑add_pushbutton_Callback回调函数,使用上面提到的方法,将光标定位到

  1. % — Executes on button press in add_pushbutton.
  2. function add_pushbutton_Callback(hObject, eventdata, handles)
  3. % hObject    handle to add_pushbutton (see GCBO)
  4. % eventdata  reserved – to be defined in a future version of MATLAB
  5. % handles    structure with handles and user data (see GUIDATA)

复制代码

在后面我们添加上如下代码

  1. a = get(handles.input1_editText,’String’);
  2. b = get(handles.input2_editText,’String’);
  3. % a和b是字符串变量,我们需要使用str2double函数将其转换为数值
  4. % 然后才能相加,否则字符串是没法相加的
  5. total = str2num(a) + str2num(b);  % 格式转换,转换为数值
  6. % 由于string属性是字符串,所以必须将两个数的和转换为字符串
  7. c = num2str(total); % 转换为字符串
  8. %  将结果赋值给answer_staticText空间的string属性,于是就可以显示结果了
  9. set(handles.answer_staticText,’String’,c);
  10. guidata(hObject, handles); % 更新结构体

复制代码

恭喜您,到此为此这个GUI程序就完成了!接下来就可以运行和演示它了!

有一个小技巧要告诉大家的,如果您在第一次保存GUI程序时,不想让Matlab为每一个callback回调函数自动生成注释文本,可以如下操作:File→Preferences…

Matlab gui教程0x3-GUI回调函数(callback)代码

如果不想让Matlab自动生成fig文件,而只是生成M文件,可以如下操作:Tools→GUI Option

Matlab gui教程0x3-GUI回调函数(callback)代码

正文完
请博主喝杯咖啡吧!
post-qrcode
 1
admin
版权声明:本站原创文章,由 admin 2016-11-09发表,共计2098字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码