MATLAB: выполнить обратный вызов при изменении переменной? - PullRequest
3 голосов
/ 15 мая 2011

Я пытаюсь создать графический интерфейс с несколькими вкладками, используя uitabpanel(), найденный в http://www.mathworks.com/matlabcentral/fileexchange/11546.Я хотел бы изменить размер графического интерфейса на основе открытой в данный момент вкладки;это доступно с uitabpanel.SelectedItem.

В основном я хотел бы создать обратный вызов для мониторинга uitabpanel.SelectedItem - когда эта переменная изменяется, окно GUI должно измениться соответствующим образом.Вообще говоря, я ищу способ контролировать переменную и выполнять обратный вызов, когда переменная изменяет значение.

Возможно ли это?Как бы я поступил так?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 15 мая 2011

У меня сейчас нет MATLAB передо мной, но если он реализован как свойство - и, насколько я могу судить из быстрого взгляда на код, это так - вы можете использовать1001 * addlistener функция и обеспечивает функцию обратного вызова для него.

addlistener(hTab,'SelectedItem','PostSet',@(s,e)disp('SelectedItem changed'))
3 голосов
/ 15 мая 2011

Я не знаком с uitab из обмена файлами. Однако, если он основан на встроенном uitab , тогда должно быть свойство selectionChangeCallback или selectionChangeFcn (в зависимости от вашей версии Matlab). Укажите функцию для этого свойства обратного вызова, и у вас есть способ выполнить функцию всякий раз, когда выбор изменяется.

Если это невозможно, единственный другой способ отслеживать изменение переменной (если вы не можете каким-либо образом использовать объекты и устанавливать методы) - это использовать TIMER OBJECT , который периодически опрашивает значение переменной ,

РЕДАКТИРОВАТЬ Поскольку UITAB FEX основан на uipanel, наиболее вероятным обратным вызовом является ButtonDownFcn . Перед тем как изменить его, убедитесь, что он не используется функцией uitab, в противном случае вы захотите отредактировать эту функцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...