Я написал программу GUI в Matlab, используя Matlab GUIDE. Создал инструмент на панели инструментов и написал функцию обратного вызова правой кнопкой мыши, как показано ниже, но когда я делаю правый щелчок по этому инструменту в графическом интерфейсе, ответа нет.ButtonDownFcn инструмента на панели инструментов Matlab GUIDE не работает
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
Это подтвердил существование функции MyTool_ButtonDownFcn(hObject, eventdata, handles)
, связанной с ButtonDownFcn
инструмента и не удаляется с помощью любых других функций. Но щелчок правой кнопкой мыши на инструменте не дает ни сообщения msgbox, ни командного окна.
Я хочу щелкнуть правой кнопкой мыши по кнопке переключения MyTool (настраиваемый инструмент на панели инструментов) для выполнения функции MyTool_ButtonDownFcn
. Как мне это сделать?
тумблера Инструмента ' MyTool' имеет действительные функции 'OnCallback' и' OffCallback'. Следовательно, нельзя использовать 'ClickedCallback' для еще одной задачи. С помощью функции «MouseReleasedCallback» функция выполняется как для левой, так и для левой кнопки мыши и для отпуска правой кнопкой мыши. Поэтому нельзя использовать этот обратный вызов, поскольку он мешает левому клику для «OnCallback» и «OffCallback». Спасибо за информацию о 'findjobj', хотя это не решило проблему. Я хотел добавить еще одну функцию к кнопке переключения MyTool. Я думал, что щелчок правой кнопкой является единственным способом. Есть ли еще идея сделать это? – ItzMe
@Govinda Я обновил этот пример, чтобы быть немного более основательным. Вы можете определенно использовать 'OnCallback' и' OffCallback' в сочетании с 'MouseReleasedCallback', вам просто нужно сделать проверку обратного вызова, что она была нажата правой кнопкой. См. Мое обновление. – Suever
Это сработало, пока я не понял, что в функции обратного вызова необходимо обновить 'handle'. У функций обратного вызова есть 'callback (hObject, eventdata, handles)' синтаксис, поэтому я специально не спросил. Но мне нужно, чтобы «ручки» тоже обновлялись внутри обратного вызова. Не могли бы вы помочь мне сделать это тоже? – ItzMe