登录论坛

查看完整版本 : 如何防止Matlab GUI中单选按钮的怪异行为?


poster
2019-12-14, 20:46
我有一个带有两个单选按钮的gui(都在同一个uibutton组上),在调用某些内部gui函数期间,我发现可以检查两个单选按钮。

是matlab gui的某个已知错误,还是可以通过单选按钮的某些属性来防止此行为?

我试图关闭单选按钮的“ interruptble”和“ BusyAction”属性,但是仍然可以在gui繁忙时检查两者。



回答:

尽管在不同的情况下,我看到的效果与您观察到的效果相似。但是,这是预期的行为,因为即使应用程序在后台繁忙,默认情况下,GUI仍应接受输入-然后由应用程序决定是否处理此输入。

您可以通过几种不同的方式明确地阻止输入被接受:


在响应单选按钮单击的回调中,可以在长时间处理之前禁用单选按钮。如果单选按钮是按钮组中唯一的控件,则可以通过获取单选 (http://www.mathworks.com/help/techdoc/ref/drawnow.html)按钮的句柄,禁用它们并使用DRAWNOW (http://www.mathworks.com/help/techdoc/ref/drawnow.html)刷新GUI来轻松地在按钮组的SelectionChangeFcn执行此操作。然后,您将在处理完成后启用单选按钮。

h = get(get(hObject, 'Parent'), 'Children'); set(h, 'Enable', 'off'); drawnow; %# %# LONG PROCESSING %# set(h, 'Enable', 'on');
以与上述类似的方式使用BLURFIGURE (http://www.mathworks.com/matlabcentral/fileexchange/30666-blurfigure-blurs-and-prevents-interaction-on-a-figure-window)在处理期间禁用整个 GUI。使用这种方法,您可以提供一个“ 取消”按钮。



更多&回答... (https://stackoverflow.com/questions/5420811)