首页 > 解决方案 > 编译后无法在 UIFigure 中选择数据点

问题描述

我在 matlabs App Designer 中创建了一个应用程序。该应用程序包含一个带有一些数据点的 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
“Normal” matlab 版本:R2020a
操作系统:Ubuntu 20.04 / CentOS 8

可以使用 matlab App Designer 提供的示例患者显示应用程序重现该问题。将其编译为包含运行时的独立桌面应用程序。使用提供的 bash 脚本安装并运行它。无法单击数据点(但在 App 设计器中可以)。

标签: matlabmatlab-compilermatlab-app-designer

解决方案


我遇到了同样的问题。经过几次不成功的尝试,我发现以下工作:

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

包含“isdeployed”命令以避免在 MATLAB 中执行代码时出现警告。然而,在已部署的版本中,您需要实际单击数据点以获取数据提示,而在 MATLAB 中,只需将鼠标悬停在它们上面就足够了。


推荐阅读