matlab中无法调用uicontrol按钮的回调

Posted

技术标签:

【中文标题】matlab中无法调用uicontrol按钮的回调【英文标题】:Cannot call callback of the pushbutton of the uicontrol in matlab 【发布时间】:2014-01-10 09:55:11 【问题描述】:

我正在尝试在 GUI matlab 中创建一个按钮并在按下它时调用一个函数。此代码不起作用。我还尝试在 uicontrol 的最后一个参数中使用这些值: fnHi, 'fnHi', 'fnHi();'

代码是:

function [] = testui()
    function fnHi()
         fprintf('hi');
    end
    fnHiHandler = @fnHi;
    fnHiHandler(); fnHi();
    figure();
    uicontrol('Style', 'pushbutton', 'string', 'Hi', 'callback', fnHiHandler);
end

输出是:

testui()
hihiUndefined function or variable 'fnHiHandler'.

Error while evaluating uicontrol Callback

所以该函数有效,因为它被调用了两次,但是当我按下按钮时它崩溃了。 我不想使用多个文件。谢谢。

【问题讨论】:

【参考方案1】:

好的,我找到了答案。问题是 fnHi 应该接收两个参数,否则它会因为输入参数太多而崩溃。所以这段代码有效:

function [] = testui()
    function fnHi(source,eventdata)
         fprintf('hi');
    end
    fnHiHandler = @fnHi;
    fnHiHandler(); fnHi();
    figure();
    uicontrol('Style', 'pushbutton', 'string', 'Hi', 'callback', fnHiHandler);
end

【讨论】:

以上是关于matlab中无法调用uicontrol按钮的回调的主要内容,如果未能解决你的问题,请参考以下文章

用户更新后从 Matlab 编辑 uicontrol 中删除光标?

MATLAB uicontrol 回调返回矩阵

如何从matlab中用户定义的函数返回一个值,该函数的回调在uicontrol中指定

uicontrol 回调函数输入参数过多

有没有办法将 uicontrol 回调函数的输出关联到它自己的“用户数据”?

如何将图像放在 Matlab uicontrol 按钮上?