chihaibo1988 发表于 2011-5-26 22:42

M件编制的界面句柄应用问题

大家好,我用M文件编制了一个界面,按钮1的回叫函数用到了按钮2的句柄,请问如何将按钮2的句柄传到按钮1的回叫函数中,请高手赐教

wangyouyi 发表于 2011-5-27 11:51

回复 1 # chihaibo1988 的帖子

感觉初学GUI,最好先做界面,再写各个控件的回调函数,这样简单些!
初学者可以参考下帮助doc guide

chihaibo1988 发表于 2011-5-27 23:26

回复 2 # wangyouyi 的帖子

我已经不算是初学了,GUI我会,我提的问题能回答我吗?

wangyouyi 发表于 2011-5-28 09:26

回复 3 # chihaibo1988 的帖子

你最好把问题具体说清楚或者附上代码,这样别人容易理解,会的人也好帮你!

ChaChing 发表于 2011-5-28 12:35

本帖最后由 ChaChing 于 2011-5-28 17:43 编辑

1.同意LS的意见
2.LZ不算初学, 最好, 搜索下一定可找到解决方式, 而且学的多
3.Ref [原创]关于GUI的一点心得体会 http://forum.vibunion.com/thread-24684-1-1.html
[原创]关于guidata和guihandles的一点心得 http://forum.vibunion.com/thread-36573-1-1.html

from http://forum.vibunion.com/home-space-uid-63979-do-blog-id-18250.html

chihaibo1988 发表于 2011-5-28 17:38

回复 4 # wangyouyi 的帖子

好的,举个例子吧
function chaoqigongkuang
figure;
r1 = uicontrol(gcf,'style','radio','String','10','BackgroundColor','y',...
    'unit','normalized','position',,'Callback',@r1call);
r2 = uicontrol(gcf,'style','radio','String','26','BackgroundColor','y',...
    'unit','normalized','position',,'Callback',@r2call);
function r1call(r1,eventdata,handles)
val1=get(r1,'Value');
if val1==1
    set(r2,'Value',0);
end
如何在函数r1call中让句柄r2有效,谢谢

chihaibo1988 发表于 2011-5-28 17:40

回复 5 # ChaChing 的帖子

这个我看过了,没找到想要的,谢谢

ChaChing 发表于 2011-5-28 17:46

回复 7 # chihaibo1988 的帖子

再详细看5F的连接(再增加一连接)!:@)
GUI个人不常用, 但我想方法可能有两三种!!

wangyouyi 发表于 2011-5-28 22:19

回复 6 # chihaibo1988 的帖子

把r2定义为全局变量,应该可以解决你的问题啦!可能还有其它的方法解决这个问题!
我感觉你程序的问题在于函数之间句柄数据的传递出现问题,使得回调函数无法对r2进行操作和设置!

chihaibo1988 发表于 2011-5-29 17:20

回复 9 # wangyouyi 的帖子

你说的很对,回调函数是无法对r2进行操作;定义全局变量好像不行,我试过,如果你有好的解决方法,能不能给我详细写出来,谢谢

chihaibo1988 发表于 2011-5-29 17:23

回复 9 # wangyouyi 的帖子

其中我知道有一种方法,就是将r2的句柄值写出去,之后在回调函数中再读进来,不过这个太麻烦,所以想看看有没有什么更好的办法{:{01}:}

chihaibo1988 发表于 2011-5-29 17:24

回复 8 # ChaChing 的帖子

方法能具体写出来吗,可以直接在我的程序上加上解决方法,谢谢{:{51}:}

wangyouyi 发表于 2011-5-29 17:46

回复 10 # chihaibo1988 的帖子

我采用全局变量可以实现对句柄r2的操作!代码如下:
function chaoqigongkuang
global r2
figure;
r1 = uicontrol(gcf,'style','radio','String','10','BackgroundColor','y',...
    'unit','normalized','position',,'Callback',@r1call);
r2 = uicontrol(gcf,'style','radio','String','26','BackgroundColor','y',...
    'unit','normalized','position',,'Callback',@r2call);
function r1call(r1,eventdata,handles)
global r2
val1=get(r1,'Value');
if val1==1
    set(r2,'Value',1);
end

chihaibo1988 发表于 2011-5-29 17:52

回复 13 # wangyouyi 的帖子

非常感谢,我把global写成globle了,犯了低级错误,终于解决了,再次感谢!
页: [1]
查看完整版本: M件编制的界面句柄应用问题