登录论坛

查看完整版本 : 请帮帮忙,我真的一愁莫展了


xs1119
2008-05-05, 16:16
我就想用GUI,做个简单的输入,和输出的用户界面
功能:就是用户给定数据,然后用我的计算程序计算出来,然后显示到这个界面上
简单的说,就是用户给出 a,b的值, 我来计算c=a+b,然后,我把c显示到界面上。应该怎么做,版主或者高手指点一下,或者给一个例证程序也好,最好用guide做的。还有
我做了一个,出错了Error in ==> abc>pushbutton1_Callback at 127
a=str2num(get(handles.a,'String'))

Error in ==> gui_mainfcn at 75
feval(varargin{1:2});,这个是什么意思阿?
:lovely: :cry:

bluepiston
2008-05-05, 20:05
需要运用3个 Edit text 组件和一个 pushbutton组件,其他的静态文本组件自己看着选择添加,
把所有操作放在 pushbutton的callback 函数中,相关语句给出如下
a=str2num(get(handles.edit_a,'String'))
b=str2num(get(handles.edit_b,'String'))
c=a+b
set(handles.edit_c,'String',num2str(c))
建议把变量 a,b 的初始值写成0,否则需要加入变量是否为数字的判断性语句,

xs1119
2008-05-05, 22:30
刚开始,我是这么做的,可是,老是出现

Error in ==> abc>pushbutton1_Callback at 127
a=str2num(get(handles.a,'String'))

Error in ==> gui_mainfcn at 75
feval(varargin{1:2});

这样的错误,后来,我把gui初始化中的

if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end

替换成

if nargin == 0 % LAUNCH GUI
fig = openfig(mfilename,'reuse');


set(fig,'Color',get(0,'defaultUicontrolBackgroundColor'));


handles = guihandles(fig);

guidata(fig, handles);

if nargout > 0
varargout{1} = fig;
end

elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK
try
if (nargout)
[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard
else
feval(varargin{:}); % FEVAL switchyard
end
catch
disp(lasterr);
end
end

这个错误就不出现了,但是我不知道为什么?还望指点:lovely: :lovely:

bluepiston
2008-05-06, 23:15
因为你的实际问题我不太清楚,但就你在第一次描述的问题中给定的例子,我用给出的关键语句调试是没有问题的.后面你说的问题,最好把你的fig传一份上来,然后附上你的m文件,这样大家可以在自己机器上进行调试,看是问题出在哪里!

xs1119
2008-05-11, 00:42
:lol: :lol: :lol: :lol:

沙砾
2008-06-09, 21:38
:lol:

s060872
2008-09-04, 15:15
先从书里面学习一下gui的例子吧,