One function for multiple pushbuttons in matlab

一世执手 提交于 2019-12-12 02:07:49

问题


I was thinking of setting one function for multiple pushbuttons, They all do the same thing, but it has a different defining value. This is so that when one pushbutton is activated it does not get mixed up with the other pushbutton of the same function


回答1:


See the documentation for callbacks. Callbacks accept two input arguments by default: the handle of the object that invoked the function and a structure of event data from the object, which may or may not be empty. You can use the String or Tag properties of your pushbutton to control behavior of your GUI based on what button is pressed using a single callback function. Consider the following example:

function testGUI
handles.mainwindow = figure();

handles.mytextbox = uicontrol( ...
    'Style', 'edit', ...
    'Units', 'normalized', ...
    'Position', [0.15 0.80 .70 .10], ...
    'String', 'No Button Has Been Pressed' ...
    );
handles.button(1) = uicontrol( ...
    'Style', 'pushbutton', ...
    'Units', 'normalized', ...
    'Position', [0.05 0.05 .30 .70], ...
    'String', 'Button1', ...
    'Callback', {@mybuttonpress,handles} ...
    );
handles.button(2) = uicontrol( ...
    'Style', 'pushbutton', ...
    'Units', 'normalized', ...
    'Position', [0.35 0.05 .30 .70], ...
    'String', 'Button2', ...
    'Callback', {@mybuttonpress,handles} ...
    );
handles.button(3) = uicontrol( ...
    'Style', 'pushbutton', ...
    'Units', 'normalized', ...
    'Position', [0.65 0.05 .30 .70], ...
    'String', 'Button3', ...
    'Callback', {@mybuttonpress,handles} ...
    );
end

function mybuttonpress(src, ~, handles)
switch src.String
    case 'Button1'
        handles.mytextbox.String = 'Button 1 Has Been Pressed';
    case 'Button2'
        handles.mytextbox.String = 'Button 2 Has Been Pressed';
    case 'Button3'
        handles.mytextbox.String = 'Button 3 Has Been Pressed';
    otherwise
        % Something strange happened
end
end

Note that this requires MATLAB R2014b or newer in order to use the dot notation for accessing object properties. See this blog post for more information.




回答2:


You can just define a generic function and call it from all of your push button callbacks



来源:https://stackoverflow.com/questions/31272494/one-function-for-multiple-pushbuttons-in-matlab

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!