Matlab 版 (精华区)
发信人: hahn (有奇☆闭关造文中), 信区: Matlab
标 题: [合集] GUI方面的问题
发信站: 哈工大紫丁香 (Wed Sep 20 17:16:30 2006), 站内
────────────────────────────────────────
zealotxbq (雪崩光电二极管) 于 (Fri May 26 18:08:16 2006) 说道:
现有一Interface上有三个Edittext,(Tag=edit1,edit2,edit3)
以及一个Push Button,(Tag=pushbutton1),
我在三个edittext和Push Button的callback函数里分别键入以下内容:
function edit1_Callback(hObject, eventdata, handles)
f1 = str2double(get(hObject,'string'));
function edit2_Callback(hObject, eventdata, handles)
f2 = str2double(get(hObject,'string'));
function pushbutton1_Callback(hObject, eventdata, handles)
f3=f1+f2;
set(handles.edit3,'String',double2str(f3));
我想在点击Pushbutton后,让edit3里显示edit1和edit2内容相加之和
总是出错误,这个问题困扰了我近72小时了,如能解决,不胜感激!!!
────────────────────────────────────────
each (each) 于 (Fri May 26 18:36:27 2006) 说道:
【 在 zealotxbq (雪崩光电二极管) 的大作中提到: 】
:
: 现有一Interface上有三个Edittext,(Tag=edit1,edit2,edit3)
: 以及一个Push Button,(Tag=pushbutton1),
: 我在三个edittext和Push Button的callback函数里分别键入以下内容:
:
: function edit1_Callback(hObject, eventdata, handles)
: f1 = str2double(get(hObject,'string'));
: function edit2_Callback(hObject, eventdata, handles)
: ...................
问题是f1和f2在 pushbutton1中是无效的,这种数据可以同过UserData进行传输,例如在
edit1_Callback中加入set(h0object,'UserData',f1),然后在pushbutton1_Callback中加
入f1=get(handles.edit1,'UserData'),f2也可以同过这种方法传输。
或者也可以干脆将edit1_Callback和edit2_Callback中的语句删除,添加到pushbutton1_
Callback中,写成发f1=str2double(get(handles.edit1,'String'));f2=str2double(ge
t(handles.edit2,'String'));不过这个我还没试过,估计应该好使
────────────────────────────────────────
zjliu (秋天的萝卜) 于 (Fri May 26 18:36:34 2006) 说道:
看看下面的代码
close all;
E1=uicontrol(gcf,'style','edit',...
'unit','normalized','position',[0.06,0.86,0.21,0.07],...
'BackgroundColor',0.7*[1,1,1],'ForegroundColor',[0.9,0.1,0.2],...
'string','121','fontsize',12,'fontname','times new roman');
E2=uicontrol(gcf,'style','edit',...
'unit','normalized','position',[0.06,0.66,0.21,0.07],...
'BackgroundColor',0.7*[1,1,1],'ForegroundColor',[0.9,0.1,0.2],...
'string','212','fontsize',12,'fontname','times new roman');
E3=uicontrol(gcf,'style','edit',...
'unit','normalized','position',[0.06,0.46,0.21,0.07],...
'BackgroundColor',0.7*[1,1,1],'ForegroundColor',[0.9,0.1,0.2],...
'string','','fontsize',12,'fontname','times new roman');
P1=uicontrol(gcf,'style','push',...
'unit','normalized','position',[0.36,0.56,0.21,0.07],...
'BackgroundColor',0.7*[1,1,1],'ForegroundColor',[0.9,0.1,0.2],...
'string','sum','fontsize',12,'fontname','times new roman',...
'callback',['a1=str2num(get(E1,''string''));',...
'a2=str2num(get(E2,''string''));',...
'set(E3,''string'',num2str(a1+a2));']);
【 在 zealotxbq (雪崩光电二极管) 的大作中提到: 】
: 现有一Interface上有三个Edittext,(Tag=edit1,edit2,edit3)
: 以及一个Push Button,(Tag=pushbutton1),
: 我在三个edittext和Push Button的callback函数里分别键入以下内容:
: ...................
────────────────────────────────────────
friendchj (春夏秋冬) 于 (Fri May 26 19:42:32 2006) 说道:
【 在 zealotxbq (雪崩光电二极管) 的大作中提到: 】
:
: 现有一Interface上有三个Edittext,(Tag=edit1,edit2,edit3)
: 以及一个Push Button,(Tag=pushbutton1),
: 我在三个edittext和Push Button的callback函数里分别键入以下内容:
:
: function edit1_Callback(hObject, eventdata, handles)
: f1 = str2double(get(hObject,'string'));
: function edit2_Callback(hObject, eventdata, handles)
: ...................
function edit1_Callback(hObject, eventdata, handles)
function edit2_Callback(hObject, eventdata, handles)
function pushbutton1_Callback(hObject, eventdata, handles)
f1 = str2double(get(handles.edit1,'string'));
f2 = str2double(get(handles.edit2,'string'));
f3=f1+f2;
set(handles.edit3,'String',f3);
这样就可以了
────────────────────────────────────────
kernelcore (江南一书生) 于 (Fri May 26 20:15:46 2006) 说道:
最简单的方法用全局变量,当年我也碰到过类似问题,不过解决方法好像有三种,西较大
有本书上说的,有一个专门的函数供用户函数间传递值得,自己好好研究把,有些东西自
己不经历是学不到什么的,呵呵
【 在 zealotxbq (雪崩光电二极管) 的大作中提到: 】
:
: 现有一Interface上有三个Edittext,(Tag=edit1,edit2,edit3)
: 以及一个Push Button,(Tag=pushbutton1),
: 我在三个edittext和Push Button的callback函数里分别键入以下内容:
:
: function edit1_Callback(hObject, eventdata, handles)
: f1 = str2double(get(hObject,'string'));
: function edit2_Callback(hObject, eventdata, handles)
: ...................
────────────────────────────────────────
zealotxbq (雪崩光电二极管) 于 (Fri May 26 20:44:30 2006) 说道:
【 在 each (each) 的大作中提到: 】
: 问题是f1和f2在 pushbutton1中是无效的,这种数据可以同过UserData进行传输,例..
: edit1_Callback中加入set(h0object,'UserData',f1),然后在pushbutton1_Callbac..
: 入f1=get(handles.edit1,'UserData'),f2也可以同过这种方法传输。
: 或者也可以干脆将edit1_Callback和edit2_Callback中的语句删除,添加到pushbutt..
: Callback中,写成发f1=str2double(get(handles.edit1,'String'));f2=str2doubl..
: t(handles.edit2,'String'));不过这个我还没试过,估计应该好使
确实有效!多谢!
────────────────────────────────────────
zealotxbq (雪崩光电二极管) 于 (Fri May 26 20:46:26 2006) 说道:
【 在 zjliu (秋天的萝卜) 的大作中提到: 】
: 看看下面的代码
: close all;
: E1=uicontrol(gcf,'style','edit',...
: 'unit','normalized','position',[0.06,0.86,0.21,0.07],...
: 'BackgroundColor',0.7*[1,1,1],'ForegroundColor',[0.9,0.1,0.2],...
: 'string','121','fontsize',12,'fontname','times new roman');
: E2=uicontrol(gcf,'style','edit',...
: 'unit','normalized','position',[0.06,0.66,0.21,0.07],...
: ...................
证实有效,但是,这样写好象不利于修改吧?再次调用也不方便啊 师兄
────────────────────────────────────────
zjliu (秋天的萝卜) 于 (Fri May 26 20:47:33 2006) 说道:
我习惯m文件写GUI,被调用的另写文件
【 在 zealotxbq (雪崩光电二极管) 的大作中提到: 】
: 证实有效,但是,这样写好象不利于修改吧?再次调用也不方便啊 师兄
────────────────────────────────────────
zealotxbq (雪崩光电二极管) 于 (Fri May 26 20:52:15 2006) 说道:
【 在 friendchj (春夏秋冬) 的大作中提到: 】
: function edit1_Callback(hObject, eventdata, handles)
: function edit2_Callback(hObject, eventdata, handles)
: function pushbutton1_Callback(hObject, eventdata, handles)
: f1 = str2double(get(handles.edit1,'string'));
: f2 = str2double(get(handles.edit2,'string'));
: f3=f1+f2;
: set(handles.edit3,'String',f3);
: 这样就可以了
这个我比较喜欢,谢谢!
────────────────────────────────────────
lookfor (px) 于 (Fri May 26 21:43:44 2006) 说道:
【 在 zealotxbq (雪崩光电二极管) 的大作中提到: 】
:
: 现有一Interface上有三个Edittext,(Tag=edit1,edit2,edit3)
: 以及一个Push Button,(Tag=pushbutton1),
: 我在三个edittext和Push Button的callback函数里分别键入以下内容:
:
: function edit1_Callback(hObject, eventdata, handles)
: f1 = str2double(get(hObject,'string'));
: function edit2_Callback(hObject, eventdata, handles)
: ...................
其实你只要把用handles.f1 handles.f2 每个callback 后再有
guidata(hObject, handles); handles.**本身就是结构数组
你试一下
────────────────────────────────────────
lawydp (杨士戎) 于 (Fri May 26 22:59:29 2006) 说道:
【 在 lookfor (px) 的大作中提到: 】
: 其实你只要把用handles.f1 handles.f2 每个callback 后再有
: guidata(hObject, handles); handles.**本身就是结构数组
: 你试一下
我采用的也是这种方法
────────────────────────────────────────
hahn (gemini&&sar) 于 (Sat May 27 16:40:12 2006) 说道:
【 在 zealotxbq (雪崩光电二极管) 的大作中提到: 】
:
: 现有一Interface上有三个Edittext,(Tag=edit1,edit2,edit3)
: 以及一个Push Button,(Tag=pushbutton1),
: 我在三个edittext和Push Button的callback函数里分别键入以下内容:
:
: function edit1_Callback(hObject, eventdata, handles)
: f1 = str2double(get(hObject,'string'));
: function edit2_Callback(hObject, eventdata, handles)
: ...................
我极力推荐用m函数自己写gui,matlab的图形方式不是很直接
但是自己写图形定位很麻烦,需要设计布局,算坐标
具体的参考程序可参见 薛定宇在matlab大观园里几个他在德国工作时写的
关于矩阵图形化处理的toolboxes
赞,zjliu写的就很好啊。
────────────────────────────────────────
feifeifool (爱芳) 于 (Sat May 27 16:51:13 2006) 说道:
为什么这么多人喜欢 用matlab来做界面?感觉真正用的多的还是vc、vb
【 在 hahn (gemini&&sar) 的大作中提到: 】
: 我极力推荐用m函数自己写gui,matlab的图形方式不是很直接
: 但是自己写图形定位很麻烦,需要设计布局,算坐标
: 具体的参考程序可参见 薛定宇在matlab大观园里几个他在德国工作时写的
: ...................
────────────────────────────────────────
hahn (gemini&&sar) 于 (Sat May 27 16:57:40 2006) 说道:
【 在 feifeifool (爱芳) 的大作中提到: 】
: 为什么这么多人喜欢 用matlab来做界面?感觉真正用的多的还是vc、vb
作应用当然用VB,VC,
这里只是仿真界面,
目的是为理论和实验的数据仿真分析提供良好的人机交互
界面是次,仿真为主。
如果用matlab做内核,vc vb做调用界面也可以,
使用dll,Active X或Mex matlab Engine
但很麻烦
各为其用吧,呵呵
────────────────────────────────────────
feifeifool (爱芳) 于 (Sat May 27 16:59:20 2006) 说道:
哦,终于弄明白了,可惜我一直不做仿真界面,以后可以考虑学一下。
【 在 hahn (gemini&&sar) 的大作中提到: 】
: 作应用当然用VB,VC,
: 这里只是仿真界面,
: 目的是为理论和实验的数据仿真分析提供良好的人机交互
: ...................
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:211.420毫秒