我想这是一个非常简单的问题,但我花了更多的时间寻找答案,而不是我在这里问的时候
我制作了3个按钮,当我点击它们时,必须更改变量,如:
[Button1] when pressed: bp = sys
[Button2] when pressed: bp = mean
[Button3] when pressed: bp = dia
这是我到目前为止,我从一个恢复脚本的按钮复制代码。我需要调整什么才能满足我的需求?
kiessys = uicontrol( 'Position', [10 35 60 30],'String','Sys(R)','Callback','uiresume( gcbf )' );
kiesmean = uicontrol( 'Position', [10 70 60 30],'String','Mean(B)','Callback','uiresume( gcbf )' );
kiesdia = uicontrol( 'Position', [10 105 60 30],'String','Dia(G)','Callback','uiresume( gcbf )' );
提前致谢
答案 0 :(得分:4)
global bp;
figure
kiessys = uicontrol( 'Position', [10 35 60 30],'String','Sys(R)','Callback', {@fun, 'sys'});
kiesmean = uicontrol( 'Position', [10 70 60 30],'String','Mean(B)','Callback', {@fun, 'mean'});
kiesdia = uicontrol( 'Position', [10 105 60 30],'String','Dia(G)','Callback', {@fun, 'dia'});
kiesdia = uicontrol( 'Position', [10 140 200 30],'String','Output current value','Callback', 'disp(bp)');
并将回调函数fun
存储到fun.m
:
function fun(~, ~, value)
global bp;
bp = value;
end
答案 1 :(得分:0)
亚历山大的回答很好,但是你可以不使用“有趣”的功能。只需在命令的“回调”字符串中键入,即
kiessys = uicontrol( 'Position', [10 35 60 30],'String','Sys(R)','Callback', 'bp = sys;');
kiesmean = uicontrol( 'Position', [10 70 60 30],'String','Mean(B)','Callback','bp = mean;');
kiesdia = uicontrol( 'Position', [10 105 60 30],'String','Dia(G)','Callback', 'bp = dia;');
命令将在“基础”工作空间中运行,任何脚本都可以看到变量。这样您就不必将它们声明为 global ,这通常不是一个好习惯。
关于在Matlab中创建GUI的说明。使用GUIDE创建gui比使用命令是一个很好的做法(实际上最好),因为它大大简化了事情并且开发速度更快(只考虑你必须使用命令创建10个按钮,2个轴等)。单独定位是一场噩梦。)