【问题标题】:How to add and delete items on MATLAB Gui如何在 MATLAB Gui 上添加和删除项目
【发布时间】:2019-01-25 12:25:17
【问题描述】:

我是新的 MATLAB GUI 用户。我正在尝试添加各种数量的项目,比如说 GUI 上的静态文本。项目的数量和位置将根据输入计算。

A = uicontrol('Style','pushbutton','Position',[0,0,50,50])

此代码添加了一个按钮,但我不知道在以这种方式创建后如何使用此按钮。这个 A 有自己的句柄或 hObject 吗?当我点击按钮时,如何让 MATLAB 显示('有人按下按钮')?

提前致谢。

【问题讨论】:

  • 需要指定控件的callback属性。

标签: matlab user-interface


【解决方案1】:

A 是一个 uicontrol 对象。它的属性'callback' 定义了按下按钮时执行的操作。具体来说,该属性可以包含(有关更多详细信息和其他可能性,请参阅here):

  1. 一个字符向量,将作为代码执行。
  2. 有时 char 向量只是对执行实际工作的函数的调用。
  3. handle 到一个函数,将使用两个输入参数调用该函数,指定对象和事件。

因此,在您的情况下,您可以执行以下任一操作:

  1. (请注意,字符向量符号中的引号通过复制进行转义):

    set(A, 'callback', 'disp(''Someone pressed the button'')')
    
  2. (请注意,我将其定义为anonymous,并且它不接受任何输入):

    dispFun = @()disp('Someone pressed the button')
    set(A, 'callback', 'dispFun')
    

    使用这种方法,当按钮被按下时,函数需要在作用域内,以便解释器可以找到它。

  3. (注意函数必须有两个输入):

    dispFun = @(o,e)disp('Someone pressed the button')
    set(A, 'callback', dispFun)
    

    使用这种方法没有范围限制。函数句柄定义匿名函数本身,它被分配给回调。

    另一方面,如果函数驻留在文件中,比如dispFun_file.m,则使用

    set(A, 'callback', @dispFun_file)
    

    再次为函数分配句柄,但该函数现在位于不同的位置。因此,如果函数被修改(或使用clear functions 从内存中删除),回调将改变。

【讨论】:

  • 当您执行set(axh,'xlim',lims) 时,您将数组lims 的值分配给属性,而不是变量本身。 dispFun 也一样。您分配变量的内容(匿名函数),而不是变量本身。
  • 或者dispFun 包含匿名函数的句柄,但只要存在至少一个对它的引用,该匿名函数就会一直存在于内存中。我不知道内部结构......
  • @Cris 谢谢你的建议!
猜你喜欢
  • 2015-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多