Я запускаю оператор drawnow
из функции обратного вызова в графическом интерфейсе MATLAB, чтобы обновить состояние кнопки. В начале обратного вызова (который имеет высокую производительность) я изменяю свойства кнопки и принудительно обновляю с помощью drawnow
. При правильной настройке кнопка остается «нажатой» вместо «отключена». После завершения обратного вызова кнопка снова обновляется и теперь отображается как «отключена».MATLAB GUI pullow renderes button 'push down' вместо 'disabled'
Прими следующие minmal (не) рабочий пример:
function simple_example()
h = figure();
% add a button, give it some properties and a callback
uicontrol(h,...
'Style','pushbutton',...
'String','I am enabled',...
'Units','normalized',...
'Position',[0.5 0.5 0.4 0.4],...
'Callback',@btn_callback);
end
function btn_callback(hObject, ~)
set(hObject,'Enable','off');
set(hObject,'String','I am disabled');
drawnow;
pause(3);
end
Есть ли способ, чтобы изменить это поведение и есть кнопка появляется отключается во время обратного вызова по-прежнему выполняется?
К сожалению, это не решает мою проблему. Я запускаю R2015a на ОС win10. Когда я попробую ваш пример, толстая синяя рамка вокруг кнопки не отображается. Однако вся кнопка, кажется, получает синий оверлей, когда вы нажимаете на него (что, кажется, происходит от обратного вызова, а не от него, в текущем выбранном объекте). Если это также можно удалить, я могу установить цвет и цвет фона, чтобы они выглядели так же, как отключенная кнопка. –
Можете ли вы попробовать мое редактирование? Тем не менее, цвет фона там ... – lhcgeneva
Это может быть конкретная ОС. Я просто попробовал wn10 и win8-машину (оба с использованием R2015a), и обе показывают ту же проблему с любой версией вышеприведенного примера. –