📄 ui_events.asv
字号:
function ui_events
% 创建uipanel事件处理实例
% 生成两个向量:在matlab的基础工作空间内生成向量
evalin('base','data_x = 0:pi/24:2*pi;')
evalin('base','data_y = cos(0:pi/24:2*pi);')
% 获取系统背景颜色
panelColor = get(0,'DefaultUicontrolBackgroundColor');
% 回调函数编写
% 图形调整回调函数
function figResize(src,evt)
fpos = get(f,'Position');
set(botPanel,'Position',...
[1/20 1/20 fpos(3)-.1 fpos(4)*8/35])
set(rightPanel,'Position',...
[fpos(3)*85/120 fpos(4)*8/35 fpos(3)*35/120 fpos(4)*27/35])
set(centerPanel,'Position',...
[1/20 fpos(4)*8/35 fpos(3)*85/120 fpos(4)*27/35]);
end
% 底面板大小调整函数
function botPanelResize(src, evt)
bpos = get(botPanel,'Position');
set(plotButton,'Position',...
[bpos(3)*10/120 bpos(4)*2/8 bpos(3)*24/120 2])
set(holdToggle,'Position',...
[bpos(3)*45/120 bpos(4)*2/8 bpos(3)*24/120 2])
set(popUp,'Position',...
[bpos(3)*80/120 bpos(4)*2/8 bpos(3)*24/120 2])
set(popUpLabel,'Position',...
[bpos(3)*80/120 bpos(4)*4/8 bpos(3)*24/120 2])
end
% 右侧面板大小调整函数
function rightPanelResize(src,evt)
rpos = get(rightPanel,'Position');
set(listBox,'Position',...
[rpos(3)*4/32 rpos(4)*2/27 rpos(3)*24/32 rpos(4)*20/27]);
set(listBoxLabel,'Position',...
[rpos(3)*4/32 rpos(4)*24/27 rpos(3)*24/32 rpos(4)*2/27]);
end
% 列表框回调函数处理
function listBoxCallback(src,evt)
% 从工作空间中得到向量
vars = evalin('base','who');
set(src,'String',vars)
end % listBoxCallback
% plot按钮的回调函数
function plotButtonCallback(src,evt)
% 获得工作空间的变量
vars = get(listBox,'String');
var_index = get(listBox,'Value');
if length(var_index) ~= 2
errordlg('You must select two variables',...
'Incorrect Selection','modal')
return
end
% 从基础工作空间中获得函数变量
x = evalin('base',vars{var_index(1)});
y = evalin('base',vars{var_index(2)});
% 获得绘图命令
selected_cmd = get(popUp,'Value');
% 使用户图形界面的坐标轴为当前坐标轴并处理绘图命令选择
axes(a)
switch selected_cmd
case 1 % plot方式绘图
plot(x,y)
case 2 % bar方式绘图
bar(x,y)
case 3 % stem方式绘图
stem(x,y)
end
end
% hold状态回调函数切换回调
function holdToggleCallback(src,evt)
button_state = get(src,'Value');
if button_state == get(src,'Max')
% 使回调函数为按下时的状态
hold(a,'on')
set(src,'String','Hold On')
elseif button_state == get(src,'Min')
% 为按下或选择时的状态
hold(a,'off')
set(src,'String','Hold Off')
end
end
% 用户图形界面对象的布局
% 设置图形对象界面和默认属性值
f = figure('Units','characters',...
'Position',[30 30 120 35],...
'Color',panelColor,...
'HandleVisibility','callback',...
'IntegerHandle','off',...
'Renderer','painters',...
'Toolbar','figure',...
'NumberTitle','off',...
'Name','Workspace Plotter',...
'ResizeFcn',@figResize);
% 创建底部面板图形对象
botPanel = uipanel('BorderType','etchedin',...
'BackgroundColor',panelColor,...
'Units','characters',...
'Position',[1/20 1/20 119.9 8],...
'Parent',f,...
'ResizeFcn',@botPanelResize);
% 创建右侧面板图形对象
rightPanel = uipanel('bordertype','etchedin',...
'BackgroundColor',panelColor,...
'Units','characters',...
'Position',[88 8 32 27],...
'Parent',f,...
'ResizeFcn',@rightPanelResize);
% 创建中间面板图形对象
centerPanel = uipanel('bordertype','etchedin',...
'Units','characters',...
'Position', [1/20 8 88 27],...
'Parent',f);
% 在当前面板添加坐标轴,中间面板
a = axes('parent',centerPanel);
% 添加列表框和标签
listBoxLabel = uicontrol(f,'Style','text','Units','characters',...
'Position',[4 24 24 2],...
'String','Select Two Variables in Current Workspace',...
'BackgroundColor',panelColor,...
'Parent',rightPanel);
listBox = uicontrol(f,'Style','listbox','Units','characters',...
'Position',[4 2 24 20],...
'BackgroundColor','white',...
'Max',10,'Min',1,...
'Parent',rightPanel,...
'Callback',@listBoxCallback);
% 添加弹出菜单和标签
popUpLabel = uicontrol(f,'Style','text','Units','characters',...
'Position',[80 4 24 2],...
'String','Choose Plot Type',...
'BackgroundColor',panelColor,...
'Parent',botPanel);
popUp = uicontrol(f,'Style','popupmenu','Units','characters',...
'Position',[80 2 24 2],...
'BackgroundColor','white',...
'String',{'Plot','Bar','Stem'},...
'Parent',botPanel);
% 添加hold和plot对象
holdToggle = uicontrol(f,'Style','toggle','Units','characters',...
'Position',[45 2 24 2],...
'String','Hold State',...
'Parent',botPanel,...
'Callback',@holdToggleCallback);
plotButton = uicontrol(f,'Style','pushbutton','Units','characters',...
'Position',[10 2 24 2],...
'String','Create Plot',...
'Parent',botPanel,...
'Callback',@plotButtonCallback);
% 初始化列表框对象并保证hold按钮的属性值正确
listBoxCallback(listBox,[])
holdToggleCallback(holdToggle,[])
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -