GUI编程遇到点问题,盼指教
程序运行结果如下:当拖动滑动条滑动时,可编辑文本框中的数值不实时改变。程序如下:
clear all;
clc;
%
PlotSin=['Num=get(hs,''Value'');'...
'subplot(ha);'...
'x=0:0.1:Num*pi;'...
'plot(x,sin(x));'...
'axis();'...
'xlabel(''x'');'...
'ylabel(''y=sin(x)'');'...
'if get(hcGrid,''Value'')==1;'...
'grid on;'...
'else;'...
'grid off;'...
'end;'...
];
%
PlotCos=['Num=get(hs,''Value'');'...
'subplot(ha);'...
'x=0:0.1:Num*pi;'...
'plot(x,cos(x));'...
'axis();'...
'xlabel(''x'');'...
'ylabel(''y=cos(x)'');'...
'if get(hcGrid,''Value'')==1;'...
'grid on;'...
'else;'...
'grid off;'...
'end;'...
];
%
hf=figure('Position',,...
'Name','Uicontrol1',...
'NumberTitle','off');
ha=axes('Position',,...
'Box','on');
%
hcGrid=uicontrol(hf,'Style','check',...
'Position',,...
'String','Grid on',...
'Value',1,...
'Callback',[...
'if get(hcGrid,''Value'')==1;'...
'Grid on;'...
'else;'...
'Grid off;'...
'end;'...
]);
hbSin=uicontrol(hf,...
'Style','pushbutton',...
'Position',,...
'String','Plot sin(x)',...
'Callback',PlotSin);
hbCos=uicontrol(hf,...
'Style','Pushbutton',...
'Position',,...
'String','Plot cos(x)',...
'Callback',PlotCos);
hbClose=uicontrol(hf,...
'Position',,...
'String','Exit',...
'Callback','close(hf)');
hrboxoff=uicontrol(hf,'Style','radio',...
'Position',,...
'String','Set box off',...
'Value',0,...
'Callback',[...
'set(hrboxon,''Value'',0);'...
'set(hrboxoff,''Value'',1);'...
'set(gca,''Box'',''off'');']);
hrboxon=uicontrol(hf,'Style','radio',...
'Position',,...
'String','Set box on',...
'Value',1,...
'Callback',[...
'set(hrboxon,''Value'',1);'...
'set(hrboxoff,''Value'',0);'...
'set(gca,''Box'',''on'');']);
% =========文本标签========
htDemo=uicontrol(hf,'Style','text',...
'Position',,...
'String','change x(N pi)');
heNum=uicontrol(hf,...
'Style','edit',...
'Position',,...
'String','4',...
'CallBack','set(heNum,''String'',num2str(Num))');
htpi=uicontrol(hf,'Style','text',...
'Position',,...
'String','Pi');
htminmax=uicontrol(hf,'Style','text',...
'Position',,...
'String','1pi 20pi');
hs=uicontrol(hf,'Style','slider',...
'Position',,...
'value',4,...
'Min',1,...
'Max',20,...
'callback',PlotSin);
回复 1 # cl_1982614 的帖子
很久没玩GUI了, 个人也不习惯使用, 仅试修改下, 感觉应该还有地方可精进, LZ自行试试吧!
clear all; clc;
%
PlotSin=['Num=get(hs,''Value''); subplot(ha); x=0:0.1:Num*pi;'...
'plot(x,sin(x)); axis(); xlabel(''x''); ylabel(''y=sin(x)'');'...
'if get(hcGrid,''Value'')==1; grid on; else; grid off; end;'];
PlotCos=['Num=get(hs,''Value'');subplot(ha); x=0:0.1:Num*pi;'...
'plot(x,cos(x)); axis(); xlabel(''x''); ylabel(''y=cos(x)'');'...
'if get(hcGrid,''Value'')==1; grid on; else; grid off; end;'];
%
hf=figure('Position',, 'Name','Uicontrol1', 'NumberTitle','off');
ha=axes('Position',, 'Box','on');
hcGrid=uicontrol(hf,'Style','check', 'Position',, 'String','Grid on', 'Value',1,...
'Callback','if get(hcGrid,''Value'')==1; Grid on; else; Grid off; end;');
hbSin=uicontrol(hf, 'Style','pushbutton', 'Position',, 'String','Plot sin(x)', 'Callback',PlotSin);
hbCos=uicontrol(hf, 'Style','Pushbutton', 'Position',, 'String','Plot cos(x)', 'Callback',PlotCos);
hbClose=uicontrol(hf, 'Position',, 'String','Exit', 'Callback','close(hf)');
hrboxoff=uicontrol(hf,'Style','radio', 'Position',, 'String','Set box off', 'Value',0, ...
'Callback','set(hrboxon,''Value'',0); set(hrboxoff,''Value'',1); set(gca,''Box'',''off'');');
hrboxon=uicontrol(hf,'Style','radio', 'Position',, 'String','Set box on', 'Value',1,...
'Callback', 'set(hrboxon,''Value'',1); set(hrboxoff,''Value'',0); set(gca,''Box'',''on'');');
htDemo=uicontrol(hf,'Style','text', 'Position',, 'String','change x(N pi)');
heNum=uicontrol(hf, 'Style','edit', 'Position',, 'String','4', ...
'CallBack','set(hs,''value'',str2num(get(heNum,''String''))); eval(PlotSin);');
htpi=uicontrol(hf,'Style','text','Position',, 'String','Pi');
htminmax=uicontrol(hf,'Style','text', 'Position',, 'String','1pi 20pi');
hs=uicontrol(hf,'Style','slider', 'Position',, 'value',4, 'Min',1, 'Max',20, ...
'callback','set(heNum,''String'',num2str(get(hs,''Value''))); eval(PlotSin);');
页:
[1]