MATLAB GUI编程的基本思想是:通过使用MATLAB GUI编辑器
- 设置的数字
- 输入消息循环
两个步骤的悉心照料(指南)。重要的是您将程序流程的控制权交给了消息循环。为了完成任务,您可以告诉消息循环在发生任何事情时调用函数。
在gui编辑器中,右键单击您的按钮并选择“查看回调 - >回调”。这会自动在你的.m文件中创建一个这样的功能,你可以指定当你按下按钮时会发生什么。
为了更好的理解,请看看按钮的Callback属性。指南将输入类似add('push_calc_Callback',hObject,eventdata,guidata(hObject))
的内容,它将主函数(add)作为新回调函数的包装器。你可以在属性编辑器中自己完成,或者以编程方式在启动代码中完成。
我猜你想要的以下情况发生:
- 获取EDIT1的字符串值和EDIT2
- 转换字符串到数字值
- 进行计算
- 设置的字符串值text3到结果的字符串表示法
您可以访问gui元素的属性通过使用可用的句柄作为第三个函数参数和get和set函数。手柄结构由指南创建,元素的名称与您指定的标签相同。
在MATLAB代码,这可能是这样的:
% --- Executes on button press in push_calc.
function push_calc_Callback(hObject, eventdata, handles)
% hObject handle to push_calc (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
x_string = get(handles.edit1, 'String');
y_string = get(handles.edit2, 'String');
x_numeric = str2num(x_string);
y_numeric = str2num(y_string);
result_numeric = x_numeric * y_numeric;
result_string = num2str(result_numeric);
set(handles.result, 'String', result_string);
编辑:的问题是什么是handles.edit1等。 每当你想用一个按钮或文本框等小部件来做某件事时,你必须能够准确地告诉matlab你的意思是什么部件。指南在幕后做了一些事情。其中之一是拨打uicontrol,它创建小部件并返回一个随机但唯一的号码。这有点像一个银行帐号,它的方式是一个handle到可以用来操纵它的资源。当您在指南中创建新按钮并在属性编辑器中指定标记“clickme”时,指南创建按钮并将手柄存储在structurehandles.clickme
中。如果你仍然记得你分配了什么标签,那么这给你一个简单的方法来获得你创建的任何小部件的句柄。
让我们的函数的第一行:
x_string = get(handles.edit1, 'String');
与一些你不应该在乎数量,只要调用函数get,因为它的相同数量的MATLAB与带EDIT1控件和属性名称来自属性编辑器,在这种情况下是'String'。这将与单击所有窗口元素相同,直到属性编辑器显示“edit1”标签,并且为该对象找到名为“String”的属性的值。
无论何时键入新文本,移动滑块,更改窗口大小等,属性都会自动更新。它也适用于其他方式。如果您使用set(handles.edit1, 'Position', [20 20 100 30])
修改'位置'属性,那么窗口小部件会自动移动并重新调整大小到指定的位置。
我想你已经看到了这个:http://www.mathworks.com/matlabcentral/fileexchange/24861-41-complete-gui-examples – 0x90
@ 0x90我已经看到它,但它仍然令人困惑,你可以帮我上面gui? – Eka