查看: 3805|回复: 15|关注: 0

[已解决] MATLAB GUI中怎么通过回调函数修改全局变量的值呢?

[复制链接]

新手

7 麦片

财富积分


050


7

主题

24

帖子

0

最佳答案
就是定义了全局变量a=0,按钮回调函数执行a=a+1,怎么让全局变量的值变为a=1,就是能每按一下a就+1,现在按多少次还是a=1,还有就是数组也是,怎么改变数组的全局变量

论坛优秀回答者

权威

4327 麦片

财富积分



3

主题

8873

帖子

987

最佳答案
QQ
  • 关注者: 280
发表于 2016-3-7 08:29:50 | 显示全部楼层
global变量 你说的全局变量是global声明的么??

论坛优秀回答者

入门

140 麦片

财富积分


50500


17

主题

294

帖子

27

最佳答案
  • 关注者: 23
发表于 2016-3-7 08:55:03 | 显示全部楼层
能方便吧这部分代码传一下吗?有了具体代码就好分析了!

新手

7 麦片

财富积分


050


7

主题

24

帖子

0

最佳答案
 楼主| 发表于 2016-3-7 10:47:01 | 显示全部楼层
本帖最后由 hyq1933 于 2016-3-7 10:51 编辑
海大汪雄 发表于 2016-3-7 08:55
能方便吧这部分代码传一下吗?有了具体代码就好分析了!

function varargout = music(varargin)%先在主函数定义全局变量
global A B a b i;
a=0;
b=0;
i=0;
A=[];
B=[];

% --- Executes on button press in radiobutton1.%按下选择按钮1时
function radiobutton1_Callback(hObject, eventdata, handles)
global a;
a=1;

% --- Executes on button press in radiobutton8.%按下选择按钮8时
function radiobutton8_Callback(hObject, eventdata, handles)
global b;
b=1;

% --- Executes on button press in pushbutton24.按下按钮24时
function pushbutton24_Callback(hObject, eventdata, handles)
global A B a b i;
i=i+1;
A(i)=a;
B(i)=b;
效果是想让A=[1],B=[1],并且按一下后数组AB都能增加一下元素,但是选择按钮按下的时候全局变量没有改变,a和b还是为0

新手

7 麦片

财富积分


050


7

主题

24

帖子

0

最佳答案
 楼主| 发表于 2016-3-7 10:47:58 | 显示全部楼层
转基因奔奔 发表于 2016-3-7 08:29
global变量 你说的全局变量是global声明的么??

嗯,是的,代码在下面

论坛优秀回答者

权威

4327 麦片

财富积分



3

主题

8873

帖子

987

最佳答案
QQ
  • 关注者: 280
发表于 2016-3-7 14:39:21 | 显示全部楼层
hyq1933 发表于 2016-3-7 10:47
嗯,是的,代码在下面

i=i+1;
A(i)=a;
B(i)=b;

可以把分号都去掉,点击按钮,看看输出是什么。

论坛优秀回答者

入门

140 麦片

财富积分


50500


17

主题

294

帖子

27

最佳答案
  • 关注者: 23
发表于 2016-3-7 14:44:49 | 显示全部楼层 |此回复为最佳答案
我现在怀疑是你这些全局变量没有初始化导致的!你把你这函数的执行顺序在捋一捋!我自己写了一个类似功能的GUI,你可以参考一下。

我写的代码用 %%%%%%%% 分隔的部分就是的。
p1.jpg
p2.jpg

button_change.fig

5.81 KB, 下载次数: 26

button_change.m

1.86 KB, 下载次数: 30

新手

7 麦片

财富积分


050


7

主题

24

帖子

0

最佳答案
 楼主| 发表于 2016-3-7 16:06:37 | 显示全部楼层
海大汪雄 发表于 2016-3-7 14:44
我现在怀疑是你这些全局变量没有初始化导致的!你把你这函数的执行顺序在捋一捋!我自己写了一个类似功能的 ...

是不是版本不一样,我点击按钮后文本框都看不到了,我是2015的。。。

新手

7 麦片

财富积分


050


7

主题

24

帖子

0

最佳答案
 楼主| 发表于 2016-3-7 16:13:57 | 显示全部楼层

这是没错的,就是不管按几次都不会改变

新手

7 麦片

财富积分


050


7

主题

24

帖子

0

最佳答案
 楼主| 发表于 2016-3-7 16:22:57 | 显示全部楼层
hyq1933 发表于 2016-3-7 16:13
这是没错的,就是不管按几次都不会改变

我想让它每按一次i就+1,数组添加一个元素要怎么办
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

快速回复 返回顶部 返回列表