matlab gui设计中的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab gui设计中的问题相关的知识,希望对你有一定的参考价值。

matlab gui设计中,动态文本框或table键,总是输入数值立即执行相关程序,怎么设计为,添加一个push按钮,当按下这个push按钮后才执行相关程序???

可以用uiwait()和uiresume()。
在文本框的callback下写uiwait(),在pushbutton的callback下写uiresume()。追问

能写一个简单的例子,如一个静态文本框和一个table和一个push键,table输入数据,当按下push按钮时,静态文本框显示table所有数值的加和。

我编的一个简单例子,能稍微修改一下,满足上面要求吗?
成功的话,可以加分
谢谢

追答

哦 要实现这个功能可以不用uiwait和uiresume的。可以这样写
function uitable1_CellEditCallback(hObject, eventdata, handles)
data = get(hObject,'data');
handles.z = sum(sum(cell2mat(data)));
guidata(hObject, handles);

function pushbutton1_Callback(hObject, eventdata, handles)
set(handles.text1,'string',num2str(handles.z));
guidata(hObject, handles);

这样就可以啦,我调试过。

追问

谢谢你这个答案,但我还是想知道uiwait和uiresume怎么编写?能再麻烦一下吗?我试了uiwait,说里面的句柄不正确什么的,得是figure的句柄,换了也不正确。劳驾了
我试了你这种方法,uitable1中的handles.z = sum(sum(cell2mat(data)));需要改为handles.z = sum(sum(data));不然运行不了,是版本的问题么?

追答

可能是版本的问题。
据我了解uiwait和uiresume常用在跨GUI的输入等待和计算,楼主这个问题不必用这个。

参考技术A answer = inputdlg(prompt,dlg_title)
返回用户的输入值到answer变量中。prompt可以是字符串,也可以是包含字符串的cell数组,dlg_title来指定对话框的标题。answer是一个cell数组,包含用户的输入数据。

MATLAB 使用GUI设计简单的计算器

1.准备工作

本文使用的版本是Matlab2018b。
了解GUI:图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。
该GUI实现了计算器的一些基本功能,如加减乘除等。

2.使用GUI功能创建计算器界面

2.1 打开GUI设计界面

首先在命令行输入guide命令,将出现以下界面:

选择第一个点击确定将生成一个新的GUI编辑界面:

2.2 编辑运行框

此时先点击左侧生成“可编辑文本”,在空白界面生成,这就是运算框了。

右键进入属性检查器进行各项的设置。分别是在设置:
①BackgroundColor,这个可以改变文本框的背景颜色
②FontSize显示字体的大小默认是8.0,可以改成16.0
③String,可以进行修改,变成空文本
④Tag(标签):表示的是这个可编辑文本框的系统中的名字
如笔者将颜色与字体大小进行了设置:
讲到这里,相信大家的可编辑文本框已经弄好了。

2.3 设置按钮

点击按钮,在编辑界面设置。

和可编辑文本框一样,右键进入属性检查器进行设置。如笔者设置了不同的颜色与文本大小。记住每建立一个按钮都可以修改按钮的名字,防止各个按钮搞混。

3.为每个按钮设定函数功能

此时我们将为每个函数编写一段代码来实现功能。此时我们将用到回调的功能。

选择第一个Calback,查看按钮1的函数,将出现以下代码:

% --- 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)

将其进行修改,在最后加上补充的代码:

% --- 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)
textString = get(handles.edit1,'String');
textString = strcat(textString,'1');
set(handles.edit1,'String',textString);

此时我们发现可以输入1了:

此时就可以知道2~0都可以进行类似的修改,包括+,-,*,.,/。只需要改变textString中的字符即可。
接下来对几个特殊功能的代码进行演示。
“=”

textString = get(handles.edit1,'String');
ans = eval(textString);
set(handles.edit1,'String',ans);

“back”,即回退

textString = get(handles.edit1,'String');
str = char(textString);
value = length(str);
textString = str(1:value-1);
set(handles.edit1,'String',textString);

“C”,即清零

set(handles.edit1,'String','');

4.结果演示


按下等于键后:

5.总结与反思

注意

  • 需要插入的是按钮,不要再次插入可编辑文本框。
  • 进行GUI界面设计可以充分发挥灵感,需要界面美观

以上是关于matlab gui设计中的问题的主要内容,如果未能解决你的问题,请参考以下文章

matlab gui设计中的问题

急急急!!!matlab gui界面设计

matlab gui界面设计日历用啥编辑器

MATLAB 使用GUI设计简单的计算器

MATLAB GUI设计学习手记的媒体评论

图像隐写基于matlab GUI变换域的可逆数字水印系统设计含Matlab源码 1813期