[英]ButtonDownFcn of a tool on Matlab GUIDE toolbar is not working
我在Matlab中使用Matlab GUIDE編寫了一個GUI程序。 在工具欄上創建了一個工具,並編寫了一個右鍵單擊回調函數,如下所示,但是當我在GUI上右鍵單擊該工具時,沒有響應。
function MyTool_ButtonDownFcn(hObject, eventdata, handles)
waitfor(msgbox('Hello button down function','Hello button down'));
disp('Hello disp');
從屬性檢查器,ButtonDownFcn的值是:
@(hObject,eventdata)main('MyTool_ButtonDownFcn',hObject,eventdata,guidata(hObject))
我嘗試使用另一個帶回調功能的按鈕進行調試,以執行'鍵盤'。
function bugfindbutton_ClickedCallback(hObject, eventdata, handles)
keyboard
這證實了與工具的ButtonDownFcn
關聯的函數MyTool_ButtonDownFcn(hObject, eventdata, handles)
的存在,並且不會被任何其他函數刪除。 但右鍵單擊該工具既不提供msgbox也不提供命令窗口輸出。
我想在“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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.