matlab gui 暂停按钮,MATLAB GUI drawow渲染按钮’向下推’而不是’禁用’

我正在MATLAB GUI中的回调函数中运行drawow语句来更新按钮的状态.在回调开始时(具有高运行时)我改变了按钮的属性并强制使用drawow进行更新.在正确更新时,按钮仍然呈现为“向下推”而不是“禁用”.回调完成后,按钮再次更新,现在呈现为“禁用”.

采取以下最小(非)工作示例:

function simple_example()

h = figure();

% add a button, give it some properties and a callback

uicontrol(h,...

'Style','pushbutton',...

'String','I am enabled',...

'Units','normalized',...

'Position',[0.5 0.5 0.4 0.4],...

'Callback',@btn_callback);

end

function btn_callback(hObject, ~)

set(hObject,'Enable','off');

set(hObject,'String','I am disabled');

drawnow;

pause(3);

end

有没有办法改变这种行为,并在回调仍在执行时按钮显示为禁用?

最佳答案 正如您在询问外观时,使用uibuttongroup解决方法:

function simple_example()

h = figure();

b = uibuttongroup('Position',[0.5 0.5 0.4 0.4]);

bgcolor = b.BackgroundColor;

% add a button, give it some properties and a callback

uicontrol(b,...

'Style','pushbutton',...

'String','I am enabled',...

'Units','normalized',...

'Position',[-0.05 -0.05 1.1 1.1],...

'Callback',@btn_callback);

end

function btn_callback(hObject, ~)

set(hObject,'Enable','off');

set(hObject,'String','I am disabled');

drawnow;

pause(3);

end

在这里,您将按钮放在uibuttongroup中,通常将多个uibutton组合在一起,然后将按钮大小设置为大于实际的uibuttongroup,因此不显示边框.

但是,这让你失去按钮向下渲染.你可以通过改变uicontrolgroup的边界属性来解决这个问题.

更新:

这似乎是特定于操作系统的.在OS X上,就我所见,你的代码工作得很好. Windows,我不知道,但根据你的评论,我的版本和你的版本似乎都没有解决问题.另一方面,在Ubuntu上,我的答案解决了这个问题.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MatlabGUI里面启动或者暂停Simulink模型-start_and_stop.mdl 针对这个问题:https://www.ilovematlab.cn/thread-23233-1-1.html 现在我做一个集中解答,从mathworks那里学习了一下。 第一步:创建你自己的Simulink模型,这个不用我讲吧,我们使用以下模型做演示: start_and_stop.mdl 第二步:创建自己的GUI, 这个论坛里也有例子,我们使用以下文件。 start_and_stop_gui.fig start_and_stop_gui.m Figure12.jpg 在start simulation里面,直接用sim函数,这个大家好像都会: % --- Executes on button press in startsim. function startsim_Callback % hObject handle to startsim % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data modelname = get; stoptime = str2num); sim复制代码 在stop simulation,里面,callback这样写: % --- Executes on button press in stopsim. function stopsim_Callback % hObject handle to stopsim % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data global GUIStopFlag; GUIStopFlag = 1; 复制代码第三步:写一个s函数,不停地检测这个GUIStopFlag参数,发送命令给STOP按钮,告诉他,可以结束了,简单吧? sysstop_new.m 第四步:在simulink模型里面,加上这个S函数 Figure13.jpg 好了,大功告成了,现在你就可以在GUI里随意控制Simulink模型了。 注:文中所用的模型,GUI文件,由mathworks公司提供。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值