一、Matlab GUI界面设计书籍
Matlab是一个在科学计算领域广泛应用的高级工具。在Matlab中,GUI可以让用户用鼠标和键盘来控制程序的交互。Matlab提供了很多GUI工具用于界面设计,如GUIDE、App Designer等,同时也有很多GUI界面设计书籍,我们可以从中学习GUI界面设计的各种方法和技巧。
介绍一些经典的Matlab GUI界面设计书籍:
- 《Matlab GUI编程详解》:本书分为十一章,深入浅出地介绍了Gui设计的思路、方法与技巧。从这里可以获得GUI设计的基本框架和概念。
- 《Matlab GUI Design》:本书全面介绍了Matlab GUI设计的相关知识,包括界面设计、图形、软件工程、数据处理等方面,可以帮助读者提高Matlab和GUI设计的水平。
- 《Matlab数学和科学计算实践》:本书主要介绍Matlab在数学和科学计算中的应用,并以GUI为主题,丰富的具体示例实现了实用的科学计算功能,是一本非常全面的Matlab教程。
二、Matlab GUI界面设计
Matlab Gui的设计,主要包括控件的布局、调整、事件响应等。其中控件的布局是设计Gui界面的核心。Matlab提供了许多可用的控件,例如静态文本、按钮、文本框、列表框、下拉列表框、滑块等等。通过这些控件,我们可以快速且灵活地设计出一个Gui界面。下面是一个简单的Matlab Gui界面,用于计算两个数相加:
function calculator()
f = figure('Visible','off',...
'Position',[360,500,450,285],...
'MenuBar','none',...
'NumberTitle','off',...
'Name','Calculator');
h1 = uicontrol('Style','text',...
'String','Input two numbers',...
'BackgroundColor',get(f,'Color'),...
'FontSize',12,...
'Position',[130,245,190,23]);
h2 = uicontrol('Style','edit',...
'BackgroundColor','white',...
'String','0',...
'Position',[140,200,100,23],...
'Callback',@edit1_Callback);
h3 = uicontrol('Style','edit',...
'BackgroundColor','white',...
'String','0',...
'Position',[250,200,100,23],...
'Callback',@edit2_Callback);
h4 = uicontrol('Style','text',...
'String','+',...
'BackgroundColor',get(f,'Color'),...
'FontSize',14,...
'FontWeight','bold',...
'Position',[165,150,60,30]);
h5 = uicontrol('Style','pushbutton',...
'String','=',...
'Position',[250,150,100,30],...
'FontSize',12,...
'Callback',@pushbutton_Callback);
h6 = uicontrol('Style','text',...
'String','Result',...
'BackgroundColor',get(f,'Color'),...
'FontSize',12,...
'Position',[130,100,60,23]);
h7 = uicontrol('Style','text',...
'BackgroundColor','white',...
'String','0',...
'FontSize',12,...
'Position',[200,100,100,23]);
set(f,'Visible','on');
function edit1_Callback(hObject, ~)
string_value1 = get(hObject,'String');
value1 = str2double(string_value1);
end
function edit2_Callback(hObject, ~)
string_value2 = get(hObject,'String');
value2 = str2double(string_value2);
end
function pushbutton_Callback(~, ~)
result = value1 + value2;
set(h7, 'String', num2str(result));
end
end
上述代码中,主要使用了uicontrol和figure函数定义GUI界面的各种控件。uicontrol函数用于创建Gui控件,例如静态文本、文本框、按钮等。figure函数用于创建Gui窗口。
三、Matlab的Gui登录界面设计
Gui的登录界面是应用非常广泛的生产环境Gui,实现Gui登录界面具有良好的人机交互性,比较容易用于实际应用。以下是一段Matlab Gui登录界面设计的示例代码:
function login()
f = figure('Visible','off',...
'Position',[200,200,400,200],...
'MenuBar','none',...
'NumberTitle','off',...
'Name','Matlab GUI Login');
h1 = uicontrol('Style','text',...
'String','Username:',...
'FontSize',12,...
'Position',[40,130,80,23]);
h2 = uicontrol('Style','edit',...
'String','',...
'Position',[130,130,200,23]);
h3 = uicontrol('Style','text',...
'String','Password:',...
'FontSize',12,...
'Position',[40,90,80,23]);
h4 = uicontrol('Style','edit',...
'String','',...
'Position',[130,90,200,23],...
'BackgroundColor',[1,1,1],...
'Callback',@password_Callback);
h5 = uicontrol('Style','pushbutton',...
'String','Login',...
'Position',[40,30,90,30],...
'FontSize',12,...
'Callback',@login_Callback);
h6 = uicontrol('Style','pushbutton',...
'String','Cancel',...
'Position',[240,30,90,30],...
'FontSize',12,...
'Callback',@cancel_Callback);
movegui(f,'center')
set(f,'Visible','on')
function password_Callback(hObject,~)
password = get(hObject,'String');
end
function login_Callback(~,~)
uiresume(f);
end
function cancel_Callback(~,~)
uiresume(f);
end
end
上述代码中,使用了uicontrol和figure函数创建Gui界面。在Gui界面中定义了用户名和密码的输入框,以及登陆、取消按钮,并通过设置Callback回调函数,对密码的输入进行验证。当用户输入正确的用户名和密码后,点击登陆按钮即可完成登陆操作。
四、Matlab GUI界面背景图
Matlab Gui可以设置背景图片,使界面更美观、实用化。背景图的设置可以使用axes函数与’image’属性值来实现。以下是一个Matlab Gui界面设置背景图片的代码示例:
function gui_background()
f = figure('Visible','off',...
'Position',[200,200,400,200],...
'MenuBar','none',...
'NumberTitle','off',...
'Name','Matlab GUI Background');
im = imread('background.jpg'); % 设置背景图
imsize = size(im);
ax = axes('Units','pixels',...
'Position',[1,1,imsize(2),imsize(1)]);
imagesc(im);
h = uicontrol('Style','pushbutton',...
'String','Push Button',...
'Position',[150,60,100,30]);
movegui(f,'center')
set(f,'Visible','on')
end
上述代码中,使用image函数设置了背景图片,并在其中添加了一个按钮控件,使界面不只是一个简单的静态图片。
五、Matlab Gui设计登录界面切换
在Gui的设计界面上实现界面的切换,在Gui中常常会用到制表符或多面板来实现。制表符可以让不同的标签/界面有很好的组织和整理,多面板让界面的切换体验更加好。下面是一段Matlab GUI设计例子,通过多面板实现登录界面和主界面的切换:
function login_ui()
% 创建figure和两个panel:登陆panel和主面版panel
f = figure('Visible','off',...
'Position',[200,200,400,400],...
'MenuBar','none',...
'NumberTitle','off',...
'Name','Matlab GUI Panel');
login_panel = uipanel('Parent',f,...
'Units','Normalized',...
'Position',[0, 0.2, 1, 0.8],...
'Visible','on');
main_panel = uipanel('Parent',f,...
'Units','Normalized',...
'Position',[0, 0.2, 1, 0.8],...
'Visible','off');
% 设置登陆panel中的控件
uicontrol('Parent',login_panel,...
'Style','text',...
'String','Username:',...
'FontSize',12,...
'Position',[40,130,80,23]);
h2 = uicontrol('Parent',login_panel,...
'Style','edit',...
'String','',...
'Position',[130,130,200,23]);
uicontrol('Parent',login_panel,...
'Style','text',...
'String','Password:',...
'FontSize',12,...
'Position',[40,90,80,23]);
h4 = uicontrol('Parent',login_panel,...
'Style','edit',...
'String','',...
'Position',[130,90,200,23],...
'BackgroundColor',[1,1,1],...
'Callback',@password_Callback);
uicontrol('Parent',login_panel,...
'Style','pushbutton',...
'String','Login',...
'Position',[40,30,90,30],...
'FontSize',12,...
'Callback',@login_Callback);
uicontrol('Parent',login_panel,...
'Style','pushbutton',...
'String','Cancel',...
'Position',[240,30,90,30],...
'FontSize',12,...
'Callback',@cancel_Callback);
% 设置主页面panel中的控件
uicontrol('Parent',main_panel,...
'Style','pushbutton',...
'String','Logout',...
'Position',[40,30,90,30]);
h = uicontrol('Parent',main_panel,...
'Style','pushbutton',...
'String','Push Button',...
'Position',[150,60,100,30]);
% 切换界面的回调函数
function password_Callback(hObject,~)
password = get(hObject,'String');
end
function login_Callback(~,~)
set(login_panel,'Visible','off');
set(main_panel,'Visible','on');
end
function cancel_Callback(~,~)
uiresume(f);
end
end
上述代码中,使用了uipanel函数创建了两个面板,一个用于创建登录界面,一个用于创建主界面。在登录界面中,我们定义了一个”取消“、”登录“按钮和用户名和密码的输入框,当用户输入正确的用户名和密码后,点击登录按钮将切换到主界面。
六、Matlab Gui设计实例
下面是一个更加完整、实用的Matlab GUI设计实例,包括输入输出模块,声音处理模块,以及控制参数模块。这个Gui设计可以用于简单的语音处理任务,例如噪声去除和语音分割操作。
function speech_gui
f = figure('Visible','off',...
'Position',[200,200,520,600],...
'MenuBar','none',...
'NumberTitle','off',...
'Name','Speech Processing GUI');h1 = uicontrol('Style', 'text', ...
'String', 'Speech Processing GUI', ...
'FontSize', 14, ...
'ForegroundColor', 'blue', ...
'BackgroundColor','white',...
'HorizontalAlignment', 'center', ...
'Position',[120,550,300,30]);panel_input = uipanel('Parent',f,...
'Units','Normalized',...
'Position',[0.05, 0.65, 0.9, 0.28],...
'Title','Input Module',...
'BackgroundColor','white');panel_output = uipanel('Parent',f,...
'Units','Normalized',...
'Position',[0.05, 0.2, 0.9, 0.4],...
'Title','Output Module',...
'BackgroundColor','white');% 设定输入模块
uicontrol('Parent',panel_input,...
'Style','text',...
'String','Input File:',...
'FontSize',10,...
'FontWeight','bold',...
'Position',[20,70,60,20]);uicontrol('Parent',panel_input,...
'Style','edit',...
'BackgroundColor','white',...
'String','test.wav',...
'原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/258149.html
微信扫一扫
支付宝扫一扫