Matlab GUIDE 工具栏上某个工具的 ButtonDownFcn 不起作用
ButtonDownFcn of a tool on Matlab GUIDE toolbar is not working
我使用 Matlab GUIDE 在 Matlab 中编写了一个 GUI 程序。
在工具栏上创建了一个工具,并写了一个右键回调函数,如下图,但是当我在GUI上右键单击该工具时,没有任何反应。
function MyTool_ButtonDownFcn(hObject, eventdata, handles)
waitfor(msgbox('Hello button down function','Hello button down'));
disp('Hello disp');
来自 属性 inspector,ButtonDownFcn 的值为:
@(hObject,eventdata)main('MyTool_ButtonDownFcn',hObject,eventdata,guidata(hObject))
我尝试使用另一个带有回调函数的按钮进行调试以执行 'keyboard'。
function bugfindbutton_ClickedCallback(hObject, eventdata, handles)
keyboard
这证实了与该工具的 ButtonDownFcn
关联的函数 MyTool_ButtonDownFcn(hObject, eventdata, handles)
的存在,并且没有被任何其他函数删除。但是右键单击该工具既不会给出 msgbox 也不会给出命令 window 输出。
我想在 'MyTool' 切换按钮(工具栏上的自定义工具)上右击鼠标以执行 MyTool_ButtonDownFcn
功能。我该怎么做?
ButtonDownFcn
被 uitoggletool
和 uipushtool
对象忽略。您应该改用 ClickedCallback
属性 来设置回调。然而,该回调只会在鼠标左键单击时执行,而不会在鼠标右键单击时触发。
如果您确实需要将回调绑定到鼠标右键单击,您可以使用文件交换中的 findjobj
实用程序来访问基础 Java 对象并分配自定义回调
h = uitoggletool( ...
'CData', rand(16, 16, 3), ...
'OnCallback', @(s,e)disp('on'), ...
'OffCallback', @(s,e)disp('off'));
% Get the underlying java object using findobj
jtoggle = findjobj(h);
% Specify a callback to be triggered on any mouse release event
set(jtoggle, 'MouseReleasedCallback', @(s,e)callback(h,e))
function callback(src, evnt)
if evnt.getButton() == 3
disp('Right Click!')
end
% Get the handles struct
handles = guidata(src);
% Modify the handles
handles.value = 2;
% Save the handles
guidata(src, handles);
end
我使用 Matlab GUIDE 在 Matlab 中编写了一个 GUI 程序。 在工具栏上创建了一个工具,并写了一个右键回调函数,如下图,但是当我在GUI上右键单击该工具时,没有任何反应。
function MyTool_ButtonDownFcn(hObject, eventdata, handles)
waitfor(msgbox('Hello button down function','Hello button down'));
disp('Hello disp');
来自 属性 inspector,ButtonDownFcn 的值为:
@(hObject,eventdata)main('MyTool_ButtonDownFcn',hObject,eventdata,guidata(hObject))
我尝试使用另一个带有回调函数的按钮进行调试以执行 'keyboard'。
function bugfindbutton_ClickedCallback(hObject, eventdata, handles)
keyboard
这证实了与该工具的 ButtonDownFcn
关联的函数 MyTool_ButtonDownFcn(hObject, eventdata, handles)
的存在,并且没有被任何其他函数删除。但是右键单击该工具既不会给出 msgbox 也不会给出命令 window 输出。
我想在 'MyTool' 切换按钮(工具栏上的自定义工具)上右击鼠标以执行 MyTool_ButtonDownFcn
功能。我该怎么做?
ButtonDownFcn
被 uitoggletool
和 uipushtool
对象忽略。您应该改用 ClickedCallback
属性 来设置回调。然而,该回调只会在鼠标左键单击时执行,而不会在鼠标右键单击时触发。
如果您确实需要将回调绑定到鼠标右键单击,您可以使用文件交换中的 findjobj
实用程序来访问基础 Java 对象并分配自定义回调
h = uitoggletool( ...
'CData', rand(16, 16, 3), ...
'OnCallback', @(s,e)disp('on'), ...
'OffCallback', @(s,e)disp('off'));
% Get the underlying java object using findobj
jtoggle = findjobj(h);
% Specify a callback to be triggered on any mouse release event
set(jtoggle, 'MouseReleasedCallback', @(s,e)callback(h,e))
function callback(src, evnt)
if evnt.getButton() == 3
disp('Right Click!')
end
% Get the handles struct
handles = guidata(src);
% Modify the handles
handles.value = 2;
% Save the handles
guidata(src, handles);
end