簡體   English   中英

Matlab GUIDE工具欄上的工具的ButtonDownFcn不起作用

[英]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是被忽略的uitoggletooluipushtool對象。 您應該使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM