Как предотвратить странное поведение переключателей в графическом интерфейсе Matlab? - PullRequest
1 голос
/ 24 марта 2011

У меня есть графический интерфейс с двумя переключателями (обе в одной группе uibutton), и во время вызова какой-либо внутренней графической функции я обнаружил, что можно проверить обе радиокнопки.

Это какая-то известная ошибка в Matlab GUI, или можно предотвратить это поведение некоторым свойством переключателя?

Я пытался отключить свойства «interruptble» и «BusyAction» переключателей, но все еще можно проверить оба, когда графический интерфейс занят.

1 Ответ

2 голосов
/ 24 марта 2011

Я видел эффекты, похожие на то, что вы наблюдаете, хотя и при других обстоятельствах. Это ожидаемое поведение, однако, поскольку графический интерфейс пользователя по умолчанию должен по-прежнему принимать данные, даже если приложение занято в фоновом режиме - тогда приложение самостоятельно решает, обрабатывать ли этот ввод или нет.

Вы можете явно запретить ввод данных несколькими различными способами:

  • В вашем обратном вызове, который реагирует на щелчки на радиокнопках, вы можете отключить радиокнопки перед длительной обработкой. Если радиокнопки являются единственными элементами управления в вашей группе кнопок, то вы можете легко сделать это в SelectionChangeFcn кнопочной группы, переместив маркеры на радиокнопки, отключив их и используя DRAWNOW для обновления графического интерфейса. После этого вы включите радиокнопки после завершения обработки.

    h = get(get(hObject, 'Parent'), 'Children');
    set(h, 'Enable', 'off');
    drawnow;
    %#
    %# LONG PROCESSING
    %#
    set(h, 'Enable', 'on');
    
  • Используйте BLURFIGURE аналогично тому, как описано выше, чтобы отключить весь GUI во время обработки. С помощью этого метода вы можете предложить кнопку Cancel .


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...