【问题标题】:Matlab slider pass value to event handlerMatlab 滑块将值传递给事件处理程序
【发布时间】:2014-08-29 20:26:08
【问题描述】:

我是 Matlab GUI 的新手,遇到以下问题。 我已经声明了一个滑块控件和他的属性,并且我已经向回调和 PostSet 事件处理程序(我认为它在技术上称为事件处理程序)添加了一个侦听器,如下所示:

function [] = HandlerSlide()
%HANDLERSLIDE Summary of this function goes here
%   Detailed explanation goes here
clf;
due = '2';
hSlider = uicontrol(                ...
    'Style','slider',               ...
    'Callback',@(s,e) disp(['hello ',num2str(due),' asdad']),...
    'Position', [400 30 200 20]     ... %[x,y, widht, height]
);
hListener = addlistener(hSlider,'Value','PostSet',@pippo);


end

function [] = pippo(s,e)

disp('ciao');

end

如您所见,我在回调处理程序(匿名函数)中使用了参数“due”。现在我想传递参数以在“pippo”函数中使用,而不将其声明为匿名函数。可能吗? 换句话说,我想像这样声明“hListerner”:

hListener = addlistener(hSlider,'Value','PostSet',@pippo{parameter1,parameter2, etc ...});

function[] = pippo(s,e, parameter1, parameter2, etc ...)

除了我如何主要使用“pippo”返回的值之外?

提前谢谢你:D

【问题讨论】:

    标签: matlab user-interface slider handler


    【解决方案1】:

    句柄函数中的输入是这样添加的:

    hListener = addlistener(hSlider,'Value','PostSet',{@pippo,parameter1,parameter2});
    

    在函数中你必须小心,因为“parameter1”不是第一个输入,而是第三个(在源和事件数据之后)。

    【讨论】:

    • 谢谢你,但我试着写这个:hListener = addlistener(hSlider,'Value','PostSet',{@pippo,'string'});链接到函数:function [] = pippo(s,e,var) disp(var);结束但我收到此错误:使用 HandlerSlide 时出错(第 48 行)没有找到匹配签名的方法“addlistener”。回调必须是函数句柄。对不起,但我对监听器机制真的很陌生:(
    • 好的,否则你可以把'pippo'函数放在'HandlerSlide'里面。变量在函数中变为“全局”(不知道如何调用它,我不是 IT 人员)。
    猜你喜欢
    • 1970-01-01
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    • 2018-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多