cl_1982614 发表于 2011-3-19 15:40

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);                        

ChaChing 发表于 2011-3-21 23:38

回复 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]
查看完整版本: GUI编程遇到点问题,盼指教