user-interface - 在 matlab GUI 中处理结构

标签 user-interface matlab

我正在学习 Matlab 中的 GUI 编程。

我发现用于存储所有 gui 数据的句柄结构非常棘手。我想知 Prop 体的结构是怎样的。我将用一个例子来解释我的问题。

假设我们已经创建了 edittext1。

我们将存储handles.edittext1。 那么

str = get(hObject,'String');
set(handles.edittext1,'String',str);

这会将handles.edittext1中的字符串设置为str。

我的问题是 令我惊讶的是,get 和 set 操作中的“String”不区分大小写。

并且handles.edittext1.String不返回存储的字符串。

所以,handles 不是一个结构数组,接下来的问题是,handles 应该是什么结构? 同样的问题也可以问 hObject。

不,这不是家庭作业或作业。这是我工作中一个正在进行的项目。我使用 matlab 已有多年,但这是我第一次使用 matlab 制作 GUI。所以,请把我当作一个新手。

问候

最佳答案

hObject 是发出回调的对象的句柄(例如,单击时启动回调的按钮)。句柄是一个包含图形中所有对象的句柄的结构。每个对象的 hObject 都不同,相同的句柄列表将传递给每个回调。在您的示例中,如果在 edittext1 回调中,则 hObject 和 handles.edittext1 是相同的。

两者都是对象的句柄,而不是结构。所以你不能说handles.edittext1.String。对象的所有属性(如字符串内容)都是通过 set 和 get 函数访问的。正如您所观察到的,属性名称不区分大小写。希望回答了您所有的问题。

更新:

我对您的后续问题的回复对于评论来说太长,因此我更新了答案。

我不确定我是否理解你的问题。如果您想检查属性的值,请使用 get ,如问题中所示:

str = get(handles.edittext1, 'String');

如果您想检查属性是否存在或属性是什么,请调用 get 而不指定参数:

get(handles.edittext1)

这会将所有属性及其值打印到控制台。如果您想以编程方式执行此操作,

params = get(handles.edittext1);

将返回一个结构体,其字段是参数。然后您可以访问参数:

str = params.String

并且可以检查字段是否存在

 isfield(params, 'String');   // This is case sensitive

关于user-interface - 在 matlab GUI 中处理结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6788466/

相关文章:

在 Wicket 中记录用户操作

matlab - 什么决定了 MaxAllowedNumWorkers?

algorithm - 在多个数组中查找最近的元素

c++ - 对重载函数的模糊调用 - log 与 ptrdiff_t

java - 线程输出到 GUI 文本字段

java - 在 Java Swing 中编码时出现延迟

Python:PyQt QPixmap 为有效图像返回 Null

java - 使用 JComboBox 从 MySQL 数据库动态选择信息

image - 检测模糊图像中的细线

c - 使用 openMP 和 gcc 编译时 MEX 文件无效