我正在创建一个包含大量复选框的GUI
h.f = figure('units','pixels','position',[200,200,150,50],...
'toolbar','none','menu','none');
for i=1:100
num_data=round((100*(5*rand()))/100);
end
h.t(i) = uicontrol('style','text','units','pixels',...
'position',[30,820-15.*i,150,15],'string','za');
h.c.a(i) = uicontrol('style','checkbox','units','pixels',...
'position',[150,820-15.*i,125,15],'string','1');
if num_data>1
h.c.b(i) = uicontrol('style','checkbox','units','pixels',...
'position',[175,820-15.*i,25,15],'string','2');
end
if num_data>2
h.c.c(i) = uicontrol('style','checkbox','units','pixels',...
'position',[200,820-15.*i,25,15],'string','3');
end
if num_data>3
h.c.d(i) = uicontrol('style','checkbox','units','pixels',...
'position',[225,820-15.*i,25,15],'string','4');
end
if num_data>4
h.c.e(i) = uicontrol('style','checkbox','units','pixels',...
'position',[250,820-15.*i,25,15],'string','5');
end
h.p = uicontrol('style','pushbutton','units','pixels',...
'position',[40,5,70,20],'string','OK',...
'callback',@p_call);
% Pushbutton callback
function p_call(varargin)
vals=get(h.c, 'Value');
checked = find([vals{:}]);
if isempty(checked)
checked = 'none';
disp(checked)
else
for i=checked
Data1=dlmread(strcat(files{i}, ' PYRO.txt'),2,0);
plot(Data1(3:end,1),Data1(3:end,2))
hold on
end
end
hold off
代码将复选框放在正确的位置,但是h在for循环结束时消失了,这就是我得到的错误。
??? Undefined variable "h" or class "h.c".
Error in ==> checkboxesGUI>p_call at 50
vals=get(h.c, 'Value');
??? Error while evaluating uicontrol Callback
如何制作,以便我可以回电话?
答案 0 :(得分:1)
该错误表示p_call
无法访问存储句柄的结构h
。您的整个代码未发布,但很明显p_call
未嵌套在拥有h
的函数中。重新构建代码,以便p_call
可以访问h
,或在每次调用时将h
作为输入参数传递。
另外,问题是h.c
是结构,而不是句柄。您的句柄位于h.c
的子字段中(即h.c.a
,h.c.b
等)。这有点乱,所以我建议更改代码,这样你就可以通过h.c(i)
保持数组中的复选框句柄,这样你的get
和find
行就可以了。