Невозможно выбрать точку данных в UIFigure после компиляции

Я создал приложение в конструкторе приложений Matlabs. Приложение включает элемент UIAxes с некоторыми точками данных.

При запуске приложения через обычный Matlab он отлично работает. Я могу выбирать точки и получать координаты с помощью
dcm_obj = datacursormode(app.UIFigure)
, а затем
click_coords1 = getCursorInfo(dcm_obj);.

После компиляции приложения с помощью Matlab Compiler (Поделиться - ›автономное настольное приложение -› включить среду выполнения в пакет) и запуска скомпилированной версии, точки данных больше не могут быть выбраны. Когда я нажимаю на точку данных на рисунке, просто ничего не происходит. Точка данных не выбрана, и всплывающая подсказка не отображается. Код, который обычно возвращает координаты, теперь ничего не возвращает. Я также заметил, что сама фигура выглядит менее красивой (круги на диаграмме рассеяния кажутся квадратными).

Другие функции, похоже, работают: раскрывающиеся меню и кнопки, которые извлекают и рисуют данные на рисунке, рисование новых данных на рисунке также не проблема. Я также могу панорамировать цифру (хотя по какой-то причине это очень медленно в Ubuntu 20, но не в CentOS 8).

Я запускаю приложение, используя предоставленный сценарий bash: ./run_myapp.sh [path to matlab]

Нет никакой разницы в запуске приложения от имени локального пользователя или root. Также нет разницы при ссылке на среду выполнения Matlab или обычный Matlab.

Подробности:
Версия среды выполнения Matlab: V98
Обычная версия Matlab: R2020a
Операционная система: Ubuntu 20.04 / CentOS 8

Проблема может быть воспроизведена с использованием примера приложения Отображение пациентов, которое предоставляет конструктор приложений Matlab. Скомпилируйте его как автономное настольное приложение с включенной средой выполнения. Установите его и запустите с помощью предоставленного сценария bash. Нажатие на точки данных невозможно (но возможно в конструкторе приложений).


person Deruijter    schedule 09.07.2020    source источник


Ответы (1)


Я столкнулся с той же проблемой. После нескольких неудачных попыток я обнаружил, что работает следующее:

dcm_obj = datacursormode(app.UIFigure);
if isdeployed
    dcm_obj.Enable = 'on';
end

Команда isdeployed включена, чтобы избежать предупреждений при выполнении кода в MATLAB. Однако в развернутой версии вам нужно щелкнуть точки данных, чтобы получить подсказку, тогда как в MATLAB достаточно просто навести на них курсор.

person Ralph    schedule 16.10.2020