【问题标题】:how to hide existing uicontrol in Matlab before printing figure?如何在打印图形之前隐藏 Matlab 中现有的 uicontrol?
【发布时间】:2015-02-13 21:17:24
【问题描述】:

我正在使用一个基于 Matlab 的程序,该程序对一些模型结果进行了一些很好的绘图。它在图形中添加了 uicontrol 幻灯片和按钮。我没有在 Matlab 中使用 gui 编程的经验,我不需要它,我只想在我的 matlab 脚本中添加几行来隐藏幻灯片和按钮。我可以从属性编辑器手动完成并将“可见”设置为“关闭”,但我正在阅读 Matlab 手册,它没有解释如何检索现有的 uicontrol 并更改其属性。有什么提示吗?我试过这个没有运气:

b = get(gcf,'uicontrol'); 设置(b,'样式','按钮','可见','关闭');

谢谢

【问题讨论】:

    标签: matlab


    【解决方案1】:

    您只需从句柄结构中访问元素并从那里更改其属性。

    例如,如果按钮存储在句柄结构中,如下所示:

    handles.b %// Whatever name you gave it and see in the Property Inspector
    

    您可以使用命令使其不可见

    set(handles.b,'Visible','off')
    

    对于所有其他属性也是如此。

    小技巧:如果您需要反复打开和关闭 GUI 的元素,您可以将它们放在一个句柄数组中,例如在 GUI 的 Opening_Fcn 中,然后在任何地方使用这个数组一次性更改它们图形用户界面。这样您就不必总是一个一个地调用它们,这可能很乏味。

    例子:

    handles.AllButtons = [handles.button1; handles.button2; handles.button3]
    

    这包含了 3 个按钮的把手。现在如果你需要同时关闭/打开它们,你可以这样做:

    set(handles.AllButtons,'Visible','off')
    

    而不是做

    set(handles.button1,'Visible','off')
    set(handles.button2,'Visible','off')
    set(handles.button3,'Visible','off')
    

    在 GUIDE 中,您可以在 Property Inspector 中检查任何 uicontrol 组件的实际名称。这是我用 GUIDE 制作的 GUI 截图:

    在这种情况下,与按钮关联的标签是pushbutton28_ReferenceChannelApply

    因此,为了更改它的任何属性,我需要使用:

    set(handles.pushbutton28_ReferenceChannelApply,'Property','value')
    

    编辑 2

    您可以使用 findobj 命令在 GUI 中查找按钮,如下所示:

    FindButtons = findobj('Style','push')
    

    这将为这些按钮输出一个句柄数组。然后可以使用get 命令查询它们的属性:

    get(FindButtons(1))
    

    【讨论】:

    • 我的问题是获取 uicontrol 的句柄。由于不是我创建的,所以我不知道手柄是什么!
    • 嗯,我有这个带有滑块和按钮的图,它是由基于 Matlab 的软件创建的(我没有源代码,它是编译的)。我打开了指南(小写),它要求我加载现有的 gui。我想出的唯一方法是保存图形并将其加载到指南中。我按下了检查器按钮,但标签字段为空。手办真的有那么难吗?应该有来自命令行的命令...
    • 太棒了,很高兴能提供帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多