我有一个带有两个单选按钮的gui(都在同一个uibutton组上),在调用某些内部gui函数期间,我发现可以检查两个单选按钮。
是matlab gui的某个已知错误,还是可以通过单选按钮的某些属性来防止此行为?
我试图关闭单选按钮的“ interruptble”和“ BusyAction”属性,但是仍然可以在gui繁忙时检查两者。
回答:
尽管在不同的情况下,我看到的效果与您观察到的效果相似。但是,这是预期的行为,因为即使应用程序在后台繁忙,默认情况下,GUI仍应接受输入-然后由应用程序决定是否处理此输入。
您可以通过几种不同的方式明确地阻止输入被接受:
- 在响应单选按钮单击的回调中,可以在长时间处理之前禁用单选按钮。如果单选按钮是按钮组中唯一的控件,则可以通过获取单选按钮的句柄,禁用它们并使用DRAWNOW刷新GUI来轻松地在按钮组的SelectionChangeFcn执行此操作。然后,您将在处理完成后启用单选按钮。
h = get(get(hObject, 'Parent'), 'Children'); set(h, 'Enable', 'off'); drawnow; %# %# LONG PROCESSING %# set(h, 'Enable', 'on');
- 以与上述类似的方式使用BLURFIGURE在处理期间禁用整个 GUI。使用这种方法,您可以提供一个“ 取消”按钮。
更多&回答...