如何在处理函数期间(而非之后)禁用 MATLAB GUI 元素
How to disable MATLAB GUI elements DURING (not AFTER) processing a function
第一次post来这里,大家好!
我的问题是关于 MATLAB GUI 界面的。在我的代码中,有一个来自按钮的函数回调,我想在处理此回调期间禁用我的 GUI 中的每个 push/slide-able 元素。不幸的是,当我在回调开始时将这些元素的 'enable' 属性 设置为 'off' 然后在结束时将其设置回 'on' 时,属性 不变。
我想我知道为什么会这样。可能是因为如果回调更改任何内容,它会在函数完成后立即发生,并且在处理完成之前,它内部的每个更改都不会影响函数外部的任何元素。这就是为什么我没有看到所有这些元素被禁用 - 因为在函数结束时我设置了所有内容 'on' 并且这是唯一发生的事情。
关于这一点 - 在执行功能期间,我可以更改 'enable' 属性 的任何选项吗?代码如下:
function [] = mListLaunchButton_call(varargin)
// Some global declarations
global a phi launchBlanker
global servoNumber servoZeroPosition servoDegreePerDegree servoDirection
// Assigning a class
Manual = varargin{3};
// Enabling "Stop" button and disabling everything else
set(Manual.listStopButton,'enable','on');
set(Manual.listSaveButton,'enable','off');
set(Manual.listDeleteButton,'enable','off');
set(Manual.listClearButton,'enable','off');
set(Manual.listLaunchButton,'enable','off');
set(Manual.closeButton,'enable','off');
for i = 1 : 5
set(Manual.sliderDOF(i),'enable','off');
end
%%%%%%%%%%%%%%%%%%%% HERE FUNCTION DOES SOME STUFF %%%%%%%%%%%%%%%%
// Disabling "Stop" button and enabling eveything else
set(Manual.listStopButton,'enable','off');
set(Manual.listSaveButton,'enable','on');
set(Manual.listDeleteButton,'enable','on');
set(Manual.listClearButton,'enable','on');
set(Manual.listLaunchButton,'enable','on');
set(Manual.closeButton,'enable','on');
for i = 1 : 5
set(Manual.sliderDOF(i),'enable','on');
end
尝试在初始 enabling/disabling GUI 控件之后和行之前使用 drawnow 命令:
%%%%%%%%%%%%%%%%%%% 这里的函数做一些事情 %%%%%%%%%%%%%%%%
这应该会导致 MATLAB 刷新排队的 GUI 事件并更新您的屏幕,然后再进入函数的主体部分。
第一次post来这里,大家好!
我的问题是关于 MATLAB GUI 界面的。在我的代码中,有一个来自按钮的函数回调,我想在处理此回调期间禁用我的 GUI 中的每个 push/slide-able 元素。不幸的是,当我在回调开始时将这些元素的 'enable' 属性 设置为 'off' 然后在结束时将其设置回 'on' 时,属性 不变。 我想我知道为什么会这样。可能是因为如果回调更改任何内容,它会在函数完成后立即发生,并且在处理完成之前,它内部的每个更改都不会影响函数外部的任何元素。这就是为什么我没有看到所有这些元素被禁用 - 因为在函数结束时我设置了所有内容 'on' 并且这是唯一发生的事情。 关于这一点 - 在执行功能期间,我可以更改 'enable' 属性 的任何选项吗?代码如下:
function [] = mListLaunchButton_call(varargin)
// Some global declarations
global a phi launchBlanker
global servoNumber servoZeroPosition servoDegreePerDegree servoDirection
// Assigning a class
Manual = varargin{3};
// Enabling "Stop" button and disabling everything else
set(Manual.listStopButton,'enable','on');
set(Manual.listSaveButton,'enable','off');
set(Manual.listDeleteButton,'enable','off');
set(Manual.listClearButton,'enable','off');
set(Manual.listLaunchButton,'enable','off');
set(Manual.closeButton,'enable','off');
for i = 1 : 5
set(Manual.sliderDOF(i),'enable','off');
end
%%%%%%%%%%%%%%%%%%%% HERE FUNCTION DOES SOME STUFF %%%%%%%%%%%%%%%%
// Disabling "Stop" button and enabling eveything else
set(Manual.listStopButton,'enable','off');
set(Manual.listSaveButton,'enable','on');
set(Manual.listDeleteButton,'enable','on');
set(Manual.listClearButton,'enable','on');
set(Manual.listLaunchButton,'enable','on');
set(Manual.closeButton,'enable','on');
for i = 1 : 5
set(Manual.sliderDOF(i),'enable','on');
end
尝试在初始 enabling/disabling GUI 控件之后和行之前使用 drawnow 命令:
%%%%%%%%%%%%%%%%%%% 这里的函数做一些事情 %%%%%%%%%%%%%%%%
这应该会导致 MATLAB 刷新排队的 GUI 事件并更新您的屏幕,然后再进入函数的主体部分。