Как добавлять и удалять элементы в MATLAB Gui - PullRequest
0 голосов
/ 25 января 2019

Я новый пользователь MATLAB GUI.Я пытаюсь добавить различное количество элементов, скажем, статические тексты в графическом интерфейсе.Количество и расположение предметов будут рассчитываться в зависимости от ввода.

A = uicontrol('Style','pushbutton','Position',[0,0,50,50])

Этот код добавляет кнопку, но я не знаю, как использовать эту кнопку после ее создания таким образом.У этого А есть свои ручки или hObject?Как мне сделать отображение MATLAB («кто-то нажал кнопку»), когда я нажал на кнопку?

Заранее спасибо.

1 Ответ

0 голосов
/ 25 января 2019

A является uicontrol объектом. Его свойство 'callback' определяет, какое действие выполняется при нажатии кнопки. В частности, свойство может содержать (см. здесь для получения более подробной информации и дополнительных возможностей):

  1. Вектор символа, который будет выполнен как код.
  2. Иногда вектор символов это просто вызов функции, которая выполняет реальную работу.
  3. A дескриптор функции, которая будет вызываться с двумя входными аргументами, указывающими объект и событие.

Итак, в вашем случае вы можете выполнить одно из следующих действий:

  1. (Обратите внимание, что кавычка, в которой символы вектора символов экранированы путем дублирования):

    set(A, 'callback', 'disp(''Someone pressed the button'')')
    
  2. (обратите внимание, что я определяю как анонимный и что он не принимает никаких входных данных):

    dispFun = @()disp('Someone pressed the button')
    set(A, 'callback', 'dispFun')
    

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

  3. (обратите внимание, что функция должна принимать два входа):

    dispFun = @(o,e)disp('Someone pressed the button')
    set(A, 'callback', dispFun)
    

    При таком подходе нет ограничений по объему. Дескриптор функции определяет саму анонимную функцию, которая присваивается обратному вызову.

    С другой стороны, если функция находится в файле, скажем dispFun_file.m, используя

    set(A, 'callback', @dispFun_file)
    

    снова назначает дескриптор функции, но эта функция теперь находится в другом месте. Поэтому, если функция модифицирована (или удалена из памяти с помощью clear functions), обратный вызов изменится.

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