2011-03-24 54 views
1

我有一個gui,它有兩個單選按鈕(都在同一個uibutton組), ,在調用某個內部gui函數的過程中,我發現可以檢查兩個單選按鈕。如何在Matlab GUI中防止單選按鈕的怪異行爲?

它是一些已知的matlab gui的bug,或者可以通過單選按鈕的某些屬性來防止這種行爲?

我試圖關閉單選按鈕的'可中斷'和'BusyAction'屬性,但仍然可以在gui忙時檢查兩者。

回答

2

我已經看到類似於你正在觀察的效果,雖然在不同的情況下。然而,這是預期的行爲,因爲即使應用程序在後臺處於忙碌狀態,默認情況下GUI仍應該接受輸入 - 然後由應用程序決定是否處理該輸入。

你可以明確地阻止接受了幾種不同的方式輸入:

  • 在你的回調,響應點擊了單選按鈕,你可以長處理前禁用單選按鈕。如果單選按鈕是按鈕組中唯一的控件,那麼您可以在對話框的SelectionChangeFcn中輕鬆完成此操作,方法是獲取單選按鈕的句柄,禁用它們並使用DRAWNOW刷新GUI。處理完成後,您將啓用單選按鈕。

    h = get(get(hObject, 'Parent'), 'Children'); 
    set(h, 'Enable', 'off'); 
    drawnow; 
    %# 
    %# LONG PROCESSING 
    %# 
    set(h, 'Enable', 'on'); 
    
  • 使用BLURFIGURE在如上述類似的方式處理期間禁用整個 GUI。用這種方法你可以提供一個取消按鈕。