matlab: как установить динамически невидимое то, что видно - PullRequest
1 голос
/ 30 декабря 2011

У меня есть простой вопрос о matlab с использованием интерфейса.
Я обнаружил, что если я сначала объявляю объект (например, таблицу с таблицей пользовательского интерфейса команды) НЕ видимым, и после того, как я сделаю его видимым, он работает, то есть я вижуфактически на рисунке показано изменение.
Наоборот, и вот в этом моя проблема. Если я сначала объявляю объект видимым, а после того, как делаю его НЕ видимым, он не работает, т.е. я не получаю невидимость объекта.

Создание примера:

figure;
h_tabell=uitable(gcf,'vis','off','data',randn(3));
h_tabell=uitable(gcf,'vis','on','data',randn(3)); %

здесь я вижу, что таблица теперь видна

% Теперь я хочу сделать эту таблицу снова невидимой, с set(h_tabell,'vis','off') % здесьЯ вижу, что таблица уже видна

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

Кто угодноможете мне помочь?

1 Ответ

2 голосов
/ 30 декабря 2011

Вы должны использовать только функцию Matlab set, чтобы изменить свойства вашего объекта.

Здесь вы делаете два вызова на uitable, так что вот что действительно произойдет, если вы сломаете его:

  • при первом вызове создать невидимую таблицу
  • при втором вызове создайте другую таблицу (переписав переменную h_tabell новым дескриптором), но на этот раз видимой

Вы можете убедиться в этом, убедившись, что у вашей фигуры теперь двое детей:

children=get(gcf,'children');

Теперь, если вы попытаетесь изменить свойство visible объекта, на который ссылается дескриптор h_tabell, оно будет применяться только ко второй таблице.

Следующий фрагмент кода работает как положено и создает только одну таблицу:

figure;
h_tabell=uitable(gcf,'visible','off','data',randn(3));
% Switch the table to visible
set(h_tabell,'visible','on');
% Switch it back to invisible
set(h_tabell,'visible','off');
...