我在MATLAB gui中设置对象的特定属性时遇到问题。有时脚本会返回错误
无效或删除对象。
这是我想要更改的文字字段。
conTxt = uicontrol('Style','text', 'String','Offline','ForegroundColor',[.99 .183 0.09], ...
'Position', [70 20 100 30],...
'Parent',hTabs(1), 'FontSize',13,'FontWeight','bold');
我已经设置了一个串行通信,其中文本字段用作用户的反馈。当响应从串行到达时,执行该行:
set(conTxt,'ForegroundColor', [.21 .96 .07],'String','Online');
你知道怎么解决吗?
答案 0 :(得分:1)
我发布这个作为答案,因为评论太长而且难看。
从注释看起来,GUI不能识别文本框,因为它不在其句柄结构中,因此当执行回调时,GUI不知道在哪里查找元素。如果您尝试以下操作该怎么办:
1)将组件存储在句柄结构中,例如:
handles.conTxt = uicontrol('Style','text', 'String','Offline','ForegroundColor',[.99 .183 0.09], ...
'Position', [70 20 100 30],...
'Parent',hTabs(1), 'FontSize',13,'FontWeight','bold');
等等其他组件。
2)在程序化GUI的设置结束时,使用GUI的guidata属性更新句柄结构:
guidata(handles.figure,handles);
3)然后在每次回调开始时,使用以下内容:
handles = guidata(gcf);
获取句柄结构并访问其组件。
希望有所帮助!