如何在 Matlab 中使一个 uifigure 成为当前的一个
How to make a uifigure the current one in Matlab
我有一个创建多个 uifigures 的脚本:
% create fig1
fig1 = uifigure('Name', 'Figure 1');
% create fig2
fig2 = uifigure('Name', 'Figure 2');
% set fig2 as the current figure
set(0, 'currentfigure', fig2);
% get the current figure
gcf
我想让第二个uifigure成为当前的,所以我用第三个命令设置了它。但是,当我随后使用 gcf
获取当前数字时,它仍然是第一个。这是命令行的输出:
ans =
Figure (1) with properties:
Number: 1
Name: ''
Color: [0.9400 0.9400 0.9400]
Position: [514 371 560 420]
Units: 'pixels'
Show all properties
有什么问题?
for uifigure
属性 HandleVisibility
— 对象句柄的可见性设置为
'off',意思是这个属性是只读的。
此 属性 提供有关 Figure 对象在其父级子级列表中的可见性的信息。由于此 属性 值始终设置为 'off',因此 Figure 对象在其父级的子级列表中不可见,并且不会被通过搜索对象层次结构访问对象的函数 return 编辑或查询对象属性。这些函数包括 gcf
、get
、findobj
、clf
和 close
。
对象有效,即使它们的 HandleVisibility 属性 设置为 'off'。如果你有权访问一个对象,你可以设置和获取它的属性,并将它传递给任何对对象进行操作的函数。但是,gcf
不能 return App Designer 图...
这段代码做你想做的,创建两个图形并将第二个图形放在最上面
% create fig1
fig1 = uifigure('Name', 'MyFig 1');
% create fig2
fig2 = uifigure('Name', 'MyFig 2');
% set fig2 as the current figure
drawnow
figure(fig2)
您会看到图 2 位于顶部,而不是图 1,您的原始代码就是这种情况。如果您调用 gcf
,它会创建一个新图形,它也将被称为“图 1”,因为 uifigure
创建的图形中有 none 个具有“HandleVisibility”属性设置为“开”。在我的代码中,我稍微更改了图形名称,这样如果您 运行 gcf
,您将看到它正在创建一个名为 Figure 1 的新图形,而不是切换到此代码创建的第一个图形。
如果您希望gcf
工作并查看图 2,您可以在创建图时打开 HandleVisbility。用以下代码替换上面用于创建图 2 的行:
fig2 = uifigure('Name', 'MyFig 2', 'handlevisibility', 'on');
我有一个创建多个 uifigures 的脚本:
% create fig1
fig1 = uifigure('Name', 'Figure 1');
% create fig2
fig2 = uifigure('Name', 'Figure 2');
% set fig2 as the current figure
set(0, 'currentfigure', fig2);
% get the current figure
gcf
我想让第二个uifigure成为当前的,所以我用第三个命令设置了它。但是,当我随后使用 gcf
获取当前数字时,它仍然是第一个。这是命令行的输出:
ans =
Figure (1) with properties:
Number: 1
Name: ''
Color: [0.9400 0.9400 0.9400]
Position: [514 371 560 420]
Units: 'pixels'
Show all properties
有什么问题?
for uifigure
属性 HandleVisibility
— 对象句柄的可见性设置为
'off',意思是这个属性是只读的。
此 属性 提供有关 Figure 对象在其父级子级列表中的可见性的信息。由于此 属性 值始终设置为 'off',因此 Figure 对象在其父级的子级列表中不可见,并且不会被通过搜索对象层次结构访问对象的函数 return 编辑或查询对象属性。这些函数包括 gcf
、get
、findobj
、clf
和 close
。
对象有效,即使它们的 HandleVisibility 属性 设置为 'off'。如果你有权访问一个对象,你可以设置和获取它的属性,并将它传递给任何对对象进行操作的函数。但是,gcf
不能 return App Designer 图...
这段代码做你想做的,创建两个图形并将第二个图形放在最上面
% create fig1
fig1 = uifigure('Name', 'MyFig 1');
% create fig2
fig2 = uifigure('Name', 'MyFig 2');
% set fig2 as the current figure
drawnow
figure(fig2)
您会看到图 2 位于顶部,而不是图 1,您的原始代码就是这种情况。如果您调用 gcf
,它会创建一个新图形,它也将被称为“图 1”,因为 uifigure
创建的图形中有 none 个具有“HandleVisibility”属性设置为“开”。在我的代码中,我稍微更改了图形名称,这样如果您 运行 gcf
,您将看到它正在创建一个名为 Figure 1 的新图形,而不是切换到此代码创建的第一个图形。
如果您希望gcf
工作并查看图 2,您可以在创建图时打开 HandleVisbility。用以下代码替换上面用于创建图 2 的行:
fig2 = uifigure('Name', 'MyFig 2', 'handlevisibility', 'on');