MATLAB GUI 设计:创建 File、Plot、Option、Color 和 Help 菜单
以下是实现以上要求的 MATLAB 代码:
% 创建主窗口
f = figure('Name', '肖璐桓', 'MenuBar', 'none', 'Position', [200 200 400 300]);
% 创建菜单栏
m = uimenu(f, 'Label', 'File');
m1 = uimenu(m, 'Label', 'Open', 'Callback', 'openDialog();');
m2 = uimenu(m, 'Label', 'Save as', 'Callback', 'saveDialog();');
m3 = uimenu(m, 'Label', 'Exit', 'Callback', 'close(gcf);');
m = uimenu(f, 'Label', 'Plot');
m1 = uimenu(m, 'Label', 'Sin', 'Callback', 'plotSin();');
m2 = uimenu(m, 'Label', 'Cos', 'Callback', 'plotCos();');
m = uimenu(f, 'Label', 'Option');
m1 = uimenu(m, 'Label', 'Grid on', 'Callback', 'grid on;');
m2 = uimenu(m, 'Label', 'Grid off', 'Callback', 'grid off;');
m3 = uimenu(m, 'Label', 'Box on', 'Callback', 'box on;');
m4 = uimenu(m, 'Label', 'Box off', 'Callback', 'box off;');
m = uimenu(f, 'Label', 'Color');
m1 = uimenu(m, 'Label', 'Yellow', 'Callback', 'set(gcf, 'Color', 'yellow');');
m2 = uimenu(m, 'Label', 'Red', 'Callback', 'set(gcf, 'Color', 'red');');
m3 = uimenu(m, 'Label', 'White', 'Callback', 'set(gcf, 'Color', 'white');');
m = uimenu(f, 'Label', 'Help');
m1 = uimenu(m, 'Label', 'About', 'Callback', 'helpDialog();');
% 打开对话框
function openDialog()
[filename, path] = uigetfile('*.doc', '肖璐桓要打开的文件');
if isequal(filename, 0)
disp('未选择文件');
else
disp(['打开文件:', fullfile(path, filename)]);
end
end
% 保存对话框
function saveDialog()
[filename, path] = uiputfile('*.doc', '肖璐桓要保存的文件');
if isequal(filename, 0)
disp('未选择保存路径');
else
disp(['保存文件:', fullfile(path, filename)]);
end
end
% 绘制正弦函数曲线
function plotSin()
x = linspace(0, 2*pi, 100);
y = sin(x);
plot(x, y, 'LineWidth', 2);
xlabel('x');
ylabel('y');
title('肖璐桓绘图');
end
% 绘制余弦函数曲线
function plotCos()
x = linspace(0, 2*pi, 100);
y = cos(x);
plot(x, y, 'LineWidth', 2);
xlabel('x');
ylabel('y');
title('肖璐桓绘图');
end
% 帮助对话框
function helpDialog()
msgbox('本程序由肖璐桓开发');
end
以上代码创建了一个菜单栏,实现了要求的功能。其中,打开和保存对话框使用了 uigetfile 和 uiputfile 函数,绘图使用了 plot 函数,帮助对话框使用了 msgbox 函数。在菜单项的回调函数中,使用 disp 函数打印一些信息,你可以根据需要进行修改。
原文地址: https://www.cveoy.top/t/topic/o6b4 著作权归作者所有。请勿转载和采集!