我只想知道是否可以有效地循环GUI功能。
function Menu1_CreateFcn(hObject, ~, ~) % --- Executes during object creation, after setting all properties.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); % Set the background color to white
end
function Menu2_CreateFcn(hObject, ~, ~) % --- Executes during object creation, after setting all properties.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); % Set the background color to white
end
function Menu3_CreateFcn(hObject, ~, ~) % --- Executes during object creation, after setting all properties.
% if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); % Set the background color to white
end
function Menu4_CreateFcn(hObject, ~, ~) % --- Executes during object creation, after setting all properties.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); % Set the background color to white
end
目前我有:
HandleNames = {'Menu1','Menu2','Menu3','Menu4'};
for d = 1:4
eval('function (HandleNames{d})_Callback(~, ~, ~)');
eval('function (HandleNames{d})_CreateFcn(hObject, ~, ~)');
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white'); % Set the background color to white
end
end
但我很清楚eval函数不是很好的做法,它在命令窗口中抛出一些错误,但仍然像以前一样运行。有没有更优雅的方式来做这件事,或者只是我必须处理的事情,干杯。
答案 0 :(得分:1)
啊,我看到你正在使用GUIDE。它是一个简单的,丢弃GUI的好工具,但是一旦你尝试做任何整洁的事情,你就会超越它的限制。幸运的是,这是一个更好的方法。您需要使用programmatic GUI函数部分或全部构建GUI。因此,对于您感兴趣的特定任务,请尝试以下方法:
menuSet = {'Hi', 'This is a menu', 'and another', 'neat, huh?'};
for menuIndex = 1:numel(menuSet)
menuHandle = uimenu(fh,'Label', menuSet{menuIndex);
% You can use menuHandle here, to manipulate any of the menus
% properties, or add a sub-menu!
end
您还可以添加子菜单,分配上下文以及其他所有有趣的内容。我知道这是一个学习曲线,但如果您打算将MATLAB用于任何严肃的GUI应用程序,我强烈建议您学习所有程序化GUI功能,其中uimenu
只是一个。祝你好运!