如何防止Matlab GUI中单选按钮的奇怪行为?

时间:2011-03-24 14:35:50

标签: user-interface matlab radio-button

我有一个gui,上面有两个单选按钮(两个都在同一个uibutton组), 在调用一些内部gui函数时,我发现可以检查两个单选按钮。

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

我试图关闭单选按钮的'interruptble'和'BusyAction'属性,但仍然可以检查gui忙的时候。

1 个答案:

答案 0 :(得分:2)

虽然在不同的情况下,我已经看到了类似于你所观察到的效果。然而,这是预期的行为,因为即使应用程序在后台忙,GUI默认仍应该接受输入 - 然后由应用程序决定是否处理此输入。

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

  • 在响应无线电按钮上的点击的回调中,您可以在长时间处理之前禁用无线电按钮。如果radiobuttons是按钮组中唯一的控件,那么您可以通过获取radiobuttons的句柄,禁用它们并使用DRAWNOW刷新GUI,轻松地在buttongroup的SelectionChangeFcn中执行此操作。然后,您将在处理完成后启用radiobuttons。

    h = get(get(hObject, 'Parent'), 'Children');
    set(h, 'Enable', 'off');
    drawnow;
    %#
    %# LONG PROCESSING
    %#
    set(h, 'Enable', 'on');
    
  • 以与上述类似的方式使用BLURFIGURE在处理期间禁用整个 GUI。使用此方法,您可以提供取消按钮。