我使用按钮和编辑文本制作了一个GUI。 第一步是在编辑文本中输入初始数据,然后单击按钮。 单击按钮后,它会从API收集一些信息,然后进行一些长时间的计算并在表格中显示结果。
但是,如果我更改了我的初始编辑文本,我仍然希望使用第一次点击时相同的API。
有没有办法保存数据并将其用于下一次按钮点击以节省计算时间,而不是每次都从API收集信息?
*只要代码打开,我就想保存这些数据,只是因为我需要更多的计算。我不想用保存功能保存数据,然后在该文件夹上有MAT文件。
谢谢。
答案 0 :(得分:0)
您可以以不同方式将数据附加到特定的GUI对象
<强> 1。使用UserData
GUI对象的属性UserData
可以存储您选择的变量(存储多个变量只是在结构,单元格或数组中收集它们)。
使用对象句柄get
或set
数据。例如,设置/获取带有标记 edit1 的编辑文本框的UserData
set(handles.edit1, 'UserData', 2)
get(handles.edit1, 'UserData')
ans =
2
请注意,在回调中,您可以编写hObject
来获取当前句柄。
<强> 2。使用申请数据
一种非常类似的方法是使用setappdata
将数据存储到GUI对象,从而创建与该对象/句柄关联的自己的键值映射。与UserData方法的不同之处在于,您可以创建多个不同的键值对(因此需要收集结构/单元格/数组中的所有内容并不是即将发生的)。
setappdata(handles.edit1, 'Foo', 1);
setappdata(handles.edit1, 'Bar', 3);
getappdata(handles.edit1)
ans =
Foo: 1
Bar: 3
getappdata(handles.edit1, 'Foo')
ans =
1
第3。使用guidata
另一种变体是将单个变量(如UserData)分配给主GUI图而不是特定句柄。这是通过使用guidata
完成的。没有键/名称用于设置数据。
guidata(anyHandleInGUI, myData)
第一个输入是主要的数字句柄或其任何子句。
guidata(handles.edit1, 5)
guidata(handles.edit1)
ans =
5
假设您的按钮的标签为 pushbutton1 。由于guidata
找到了根父级(图形句柄),因此您可以使用其句柄获取相同的数据。
guidata(handles.pushbutton1)
ans =
5