[求助] 为什么用 命令行 设置的 上下文菜单 不能像 菜单编辑器 所设置的那样正常运行?

[复制链接]
好吃的名字 发表于 2019-2-25 18:46 | 显示全部楼层 |阅读模式
问题内容 GUI UIContextMenu,为什么用 命令行 设置的 上下文菜单 不能像 菜单编辑器 所设置的那样正常运行?

题目如下图

[img]![图片说明]()

为了方便,自己设置了数据文件如下

![图片说明]()



解题(两种方式,文件名分别为plot_line 和 menu)

先设置了菜单编辑器如下
![图片说明]()

plot_line中,上下文菜单 菜单项在一开始就设置好,而menu中未设置菜单项,其菜单项在后文open回调函数代码中设置


回调函数代码如下

1.plot line

% --------------------------------------------------------------------

function Open_Callback(hObject, eventdata, handles)

% hObject    handle to Open (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

filename=input('Please input the name of the file','s');

data=xlsread([filename,'.xlsx']);

x=data(:,1);

y=data(:,2);

line=plot(x,y);

set(line,'UIContextMenu',handles.dressing)



% --------------------------------------------------------------------

function color_Callback(hObject, eventdata, handles)

% hObject    handle to color (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

line=findobj(gcf,'Type','Line');

c=rand(1,3);

set(line,'Color',c)

```

2.menu

% --------------------------------------------------------------------

function Open_Callback(hObject, eventdata, handles)

% hObject    handle to Open (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

filename=input('Please input the filename of the database.','s');

A=xlsread(filename);

x=A(:,1);

y=A(:,2);

line=plot(x,y);

uimenu(handles.dressing,'Label','color')

uimenu(handles.dressing,'Label','style')

set(line,'UIContextMenu',handles.dressing)

handles=guihandles(gcf);

guidata(gcf,handles)

% --------------------------------------------------------------------

function color_Callback(hObject, eventdata, handles)

%hObject    handle to dressing (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

line=findobj(gcf,'Type','Line');

c=rand(1,3);

set(line,'Color',c)


![图片说明]()


运行结果如下

![图片说明]()


其中plot line 脚本运行后得到的图像,右击图线点击“color”,图线颜色会随机发生改变,而 menu 脚本运行后得到的图线,鼠标右击点击
“color”图线颜色不会发生改变。

求问大佬原因 T-T
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们
关于我们
免责声明
帮助中心
常见问题
意见反馈
论坛规则
加入我们
版主招募
人才招聘
竞赛合作
高校合作
社团加盟
联系我们
客服QQ:249558871
官方微信号:
请在工作日10:00-19:00联系客服
关注微信公众号
快速回复 返回顶部 返回列表