如何在MATLAB中更改按钮可见性?

时间:2012-03-13 16:36:38

标签: matlab

我正在尝试创建一个简单的游戏。

它应该做什么:创建2个按钮,当用户点击每个按钮时,它应该消失。

它实际上做了什么:当我点击第一个按钮时,它会消失。但是,当我点击第二个时,没有任何事情发生。

clear all, clc, close all

fh = figure;

n = 2;
x = ceil(rand(10)*2);
y = ceil(rand(10)*2);

bgh = uibuttongroup('Parent',fh,'Title',...
    'Button Game','Position',[.1 .2 .8 .6]);

for i = 1:n
    rbh1 = uicontrol(bgh,'Style','Pushbutton','String','Red',...
        'Units','normalized','Position',[rand(1) rand(1) x(1,i) y(1,i)]);
    set(rbh1,'CallBack','set(rbh1,''visible'',''off'')')
end

axt = axes('Parent',bgh,'Units','normalized');

axis([0.5 1 0.5 1])
axis square
axis off

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

问题是您只为一个句柄设置回调。将代码的循环位更改为以下内容,它将起作用。由于这似乎是一个学习练习,我会留给你探索它,并弄清楚为什么这个改变有帮助。

for i = 1:n
rbh(i) = uicontrol(bgh,'Style','Pushbutton','String','Red',...
'Units','normalized','Position',[rand(1) rand(1) x(1,i) y(1,i)]);

set(rbh(i),'CallBack',['set(rbh( ' num2str(i) '),''visible'',''off'')'])
end