Как я могу изменить видимость кнопок в MATLAB? - PullRequest
0 голосов
/ 13 марта 2012

Я пытаюсь создать простую игру.

Что нужно сделать: создать 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 Ответ

1 голос
/ 13 марта 2012

Проблема в том, что вы устанавливаете обратный вызов только для одного дескриптора.Измените бит цикла вашего кода на следующий, и он будет работать.Поскольку это похоже на учебное упражнение, я предоставлю вам возможность изучить его и выяснить, почему это изменение помогает.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...