gui设置可编辑文本框的回调函数_Matlab gui教程0x3-GUI回调函数(callback)代码

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 20:55   1759   0

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

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

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

在正式讲解之前,一个小使用技巧,Matlab Editor(代码编辑器)工具栏显示函数按钮

,可以让我们快速跳转我们需要的函数位置!这个在.m内容很多的时候很有用哦!

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

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

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

function input1_editText_Callback(hObject, eventdata, handles)

% hObject handle to input1_editText (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hint: get(hObject,’String’) returns contents of input1_editText as text

% str2double(get(hObject,’String’)) returns contents of

% input1_editText as a double

复制代码

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

% handles 包含figure中所有图形对象句柄的结构体,如果我们想引用tag为mytag的控件,使用handles.mytag

% set/get 函数是用来设置/获取某个控件属性

% 使用get命令获取第一个加数,并将它转换成数值

input = str2num(get(hObject,’String’)); % string属性是字符串,所以必须转换成数值

% 检验输入是否为空,是则将它置为0

if (isempty(input))

set(hObject,’String’,’0′)

end

% 保存handles结构体,只要在handles结构体有改变时,才需要保存

guidata(hObject, handles); % 这里由于handles没有改变,故这里其实没有必要,但是为了避免潜在的不必要麻烦,建议在所有Callback最后都添加该命令

复制代码

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

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

% — Executes on button press in add_pushbutton.

function add_pushbutton_Callback(hObject, eventdata, handles)

% hObject handle to add_pushbutton (see GCBO)

% eventdata reserved – to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

复制代码

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

a = get(handles.input1_editText,’String’);

b = get(handles.input2_editText,’String’);

% a和b是字符串变量,我们需要使用str2double函数将其转换为数值

% 然后才能相加,否则字符串是没法相加的

total = str2num(a) + str2num(b); % 格式转换,转换为数值

% 由于string属性是字符串,所以必须将两个数的和转换为字符串

c = num2str(total); % 转换为字符串

% 将结果赋值给answer_staticText空间的string属性,于是就可以显示结果了

set(handles.answer_staticText,’String’,c);

guidata(hObject, handles); % 更新结构体

复制代码

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

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

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

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP