t_Z_qiong 发表于 2006-10-12 09:20

帮我看看set这么用有什么问题?

我现在有一个gui的界面,上面有很多edit的编辑空白地方,我想在上面输出我在程序中计算好的一个数值 怎么做啊?
我的方法是在该控件的回调函数中用set(handles.name, data);对吗? 怎马没在gui上看到data的数值阿!!

jimin 发表于 2006-10-12 09:35

给你个例子参考一下
h=figure('toolbar','none',...
    'position',,...
    'name','实例');
h1=uicontrol(gcf,'style','edit',...
    'position',,...
    'HorizontalAlignment','right',...
    'callback',['m=get(h1,''string'');,',...
      'a=str2num(m);']);
h2=uicontrol(gcf,'style','edit',...
    'HorizontalAlignment','right',...
    'position',,...
    'callback',['n=get(h2,''string'');,',...
      'b=str2num(n);']);
h3=uicontrol(gcf,'style','text',...
    'string','被除数',...
    'position',);
h4=uicontrol(gcf,'style','edit',...
    'position',);
h5=uicontrol(gcf,'style','pushbutton',...
    'position',,...
    'string','=',...
    'callback',[...
      'if b==0,',...
      'h7=errordlg(''除数不能为0!'',''error'',''on'');,',...
      'else,',...
      'k=a/b;,',...
      'c=num2str(k);,',...
      'set(h4,''string'',c),',...
      'end']);
h8=uicontrol(gcf,'style','text',...
    'string','除数',...
    'position',);
h9=uicontrol(gcf,'style','text',...
    'string','商',...
    'position',);

eight 发表于 2006-10-12 10:29

原帖由 jimin 于 2006-10-12 09:35 发表
给你个例子参考一下
h=figure('toolbar','none',...
    'position',,...
    'name','实例');
h1=uicontrol(gcf,'style','edit',...
    'position',,...
    'HorizontalAlignment','right',...
    'ca ...

这个是没错,不过人家是gui,把最核心的东西贴出来就ok拉

yincar 发表于 2006-10-12 10:55

最核心的是什么,这么多我只想在回调函数中有一个可以在可编辑文本中显示数值的语句。
例如:显示32
请给出相应的语句。
谢谢!!

eight 发表于 2006-10-12 11:04

原帖由 yincar 于 2006-10-12 10:55 发表
最核心的是什么,这么多我只想在回调函数中有一个可以在可编辑文本中显示数值的语句。
例如:显示32
请给出相应的语句。
谢谢!!


假设你的editbox的Tag属性是edtA,则用set(handles.edtA,''string'',num2str(32))就ok了,建议这种问题搜索一下论坛,我曾经写过一篇GUI文章,也回答过类似的问题

jimin 发表于 2006-10-12 11:05

原帖由 eight 于 2006-10-12 10:29 发表


这个是没错,不过人家是gui,把最核心的东西贴出来就ok拉
所言极是,喜欢你这种简单明了一针见血的风格

t_Z_qiong 发表于 2006-10-12 13:35

这种方法我用过,可是还是不能在编辑框中得到数值。不知道是那里的问题。
我是在function varargout =s_edit_Callback(hObject, eventdata, handles)回调函数中写的该语句。有问题吗?

eight 发表于 2006-10-12 14:21

原帖由 t_Z_qiong 于 2006-10-12 13:35 发表
这种方法我用过,可是还是不能在编辑框中得到数值。不知道是那里的问题。
我是在function varargout =s_edit_Callback(hObject, eventdata, handles)回调函数中写的该语句。有问题吗?


唉,看来送佛要送到西,就在你上面说的的函数中写:

读数据x = get(handles.s_edit,'String');
写数据set(handles.s_edit, 'String', x);

t_Z_qiong 发表于 2006-10-16 11:24

八:上次是我罗嗦了一些。可是你说的方法,我用过就是出不来显示的值。我自己都要晕了。我都不知道还有什么问题。就是在编辑框上没有数值显示。晕晕晕!

eight 发表于 2006-10-16 11:29

原帖由 t_Z_qiong 于 2006-10-16 11:24 发表
八:上次是我罗嗦了一些。可是你说的方法,我用过就是出不来显示的值。我自己都要晕了。我都不知道还有什么问题。就是在编辑框上没有数值显示。晕晕晕!


首先在GUI设计页面中,试试你的编辑框有没有问题,具体如下:File->New->GUI->Open Existing GUI,打开你的fig文件,然后双击你的编辑框,在属性页中设置 String 为1234,然后运行一下,看看有没有1234这个数值显示。如果有,把你的代码贴出来,如果没有,我就没有办法了

yincar 发表于 2006-10-18 10:01

eight:按照你的方法我试了,可以出现1234;可是我把代码贴到显示1234的编辑框中,显示出来的是代码阿,还是没有数值。
我在function varargout =s_edit_Callback(hObject, eventdata, handles)回调函数中泳到了该gui中别的回调函数中计算的数值,是不是应为这个原因,不能 用set(handles.s_edit, 'String', x);把数值显示出来,因该怎么解决阿?
谢谢!非常谢谢!!

eight 发表于 2006-10-18 10:10

原帖由 yincar 于 2006-10-18 10:01 发表
eight:按照你的方法我试了,可以出现1234;可是我把代码贴到显示1234的编辑框中,显示出来的是代码阿,还是没有数值。
我在function varargout =s_edit_Callback(hObject, eventdata, handles)回调函数中泳到了该 ...

function varargout =s_edit_Callback(hObject, eventdata, handles) 这个函数肯定不是matlab通过GUI自动生成的,你一定是想返回某些东西,把其返回值修改了,如果是自动生成的代码,应该是:function s_edit_Callback(hObject, eventdata, handles),我猜问题就出在这里
页: [1]
查看完整版本: 帮我看看set这么用有什么问题?