. visible ='off'和axis之间的相互作用。UIAxes, 'off')在App Designer中

98次观看(过去30天)
这介于错误报告和请求帮助之间。
在R2019a上的App Designer中,我看到一个令人困惑的事情发生了,在UIAxes上执行“轴关闭”命令也将. visible字段设置为“关闭”,而实际上没有使plot不可见。我注意到这一点时,我有一个“轴断开”的情节,我希望它在应用执行的不同时间出现和消失,这是混合的。参见下面的简单演示代码。
是否有一种方法来做与“轴关闭”相同的事情——意思是,删除x标签,标记,和标记标签——而不设置。visible = 'off'存在这个问题/bug?
classdeftest_visible < matlab.apps.AppBase . test_visible
与应用程序组件对应的属性
属性(访问=公共)
UIFigurematlab.ui.Figure
UIAxesmatlab.ui.control.UIAxes
结束
处理组件事件的回调函数
方法(访问=私有)
组件创建后执行的代码
函数startupFcn(应用)
X = linspace(0,2*pi,100);
Y = sin(x);
情节(应用程序。UIAxes,x, y,“- k”);
流('可见性= %s\n', app.UIAxes.Visible);
轴(应用程序。UIAxes,“关闭”);
流('可见性= %s\n', app.UIAxes.Visible);
结束
结束
%组件初始化
方法(访问=私有)
创建uifig图和组件
函数createcomponent(应用)
%创建uifig图并隐藏,直到所有组件创建完成
app.UIFigure = uifigure(“可见”“关闭”);
app. ufigu . position = [100 100 640 480];
app.UIFigure.Name =的界面图
%创建ui轴
app.UIAxes = uiaxes(app.UIFigure);
标题(应用程序。UIAxes,“标题”
包含(应用程序。UIAxes,“X”
ylabel(应用程序。UIAxes,“Y”
app.UIAxes.Position = [33 53 530 392];
%显示创建所有组件后的图形
app.UIFigure.Visible =“上”
结束
结束
应用程序的创建和删除
方法(访问=公共)
%构建应用程序
函数App = test_visible
创建uifig图和组件
createcomponent(应用)
在应用程序设计器中注册应用程序
app.UIFigure registerApp(应用)
%执行启动函数
@startupFcn runStartupFcn(应用)
如果Nargout == 0
清晰的应用程序
结束
结束
%在删除应用程序之前执行的代码
函数删除(应用)
删除app时删除uifig图
删除(app.UIFigure)
结束
结束
结束

答案(2)

希望问
希望问 2019年10月28日
我相信你没有看到这些变化,因为它们都在启动函数中。我用drawnow调整了启动功能(强制在启动过程中更新图形的绘制)和暂停,让它有时间显示。
函数startupFcn(应用)
X = linspace(0,2*pi,100);
Y = sin(x);
情节(应用程序。UIAxes,x, y,“- k”);
流('可见性= %s\n', app.UIAxes.Visible);
app.UIAxes.Visible =“关闭”
流('可见性= %s\n', app.UIAxes.Visible);
drawnow (“nocallbacks”
暂停(1)
app.UIAxes.Visible =“上”
流('可见性= %s\n', app.UIAxes.Visible);
结束

本杰明·克劳斯
本杰明·克劳斯 2020年11月11日
这是由uiaxis继承的axis长期存在的行为。
  • 在大多数图形对象上,可见你认为它应该做什么:如果你设置可见“关闭”物体和它所有的子物体都变得不可见。
  • 在轴,当你设置可见“关闭”坐标轴消失了,但它的后代仍然可见。这样可以隐藏坐标轴的背景、标记标签和坐标轴的其他方面,但继续显示坐标轴内部的图形。这通常用于“世界构建”类型的应用程序。
让坐标轴及其所有子轴不可见的最简单方法是将坐标轴放入面板中,然后隐藏面板。
P = uipanel;
Ax =坐标轴(p);
P = plot(ax, 1:10);
斧子。可见=“关闭”%行仍然可见
p.Visible =“关闭”%线消失
p.Visible =“上”重新出现%行
或者,如果您正在运行R2019b或更高版本,您也可以使用 tiledlayout 命令就像你在面板上一样。
T = tiledlayout(1,1);
Ax = axes(t);
P = plot(ax, 1:10);
斧子。可见=“关闭”%行仍然可见
t.Visible =“关闭”%线消失
t.Visible =“上”重新出现%行

s manbetx 845

社区寻宝

在MATLAB中央找到宝藏,并发现社区可以如何帮助你!

开始狩猎!