我有一个基于 matlab 2015 的 GUI 来编码
当我按下按钮时,编辑框数据之一不断变化,但我希望它的值根据我的回调继续变化,直到我释放它
现在我必须一次又一次地单击我的按钮,这会更改我的编辑框值
请给我建议一个解决方法
% --- Executes on button press in pushbutton27.
function pushbutton27_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton27 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
Freq = (str2double(get(handles.edit4,'String')))+ 0.001;
if Freq > 20
set(handles.edit4,'String','20');
else
set(handles.edit4,'String',num2str(Freq));
end
最佳答案
uicontrol
仅具有响应鼠标单击的 Callback
和 ButtonDownFcn
属性。如果 uicontrol 的属性 Enable
设置为 'on'
,则只有 Callback 中指定的函数会对左键单击使用react。如果该属性设置为'off'
或'inactive'
,它也会对右键单击使用react。因为对于非事件的 uicontrol,您无法通过单击来更改值,所以我没有看到使用 uicontrol 的直接解决方案。
解决方案是使用图窗的 WindowButtonDownFcn
和 WindowButtonUpFcn
属性。对于按下按钮,您可以使用类似以下内容:
function buttondown(hobj,~,hedit)
hobj.UserData = true;
while hobj.UserData
pause(0.2); % put a pause so it doesnt change too fast
hedit.String = datestr(now); % you can set it to anything you want here
end
end
对于按钮向上:
function buttonup(hobj,~)
hObj.UserData = false;
end
当然,如果您有多个按钮必须以这种方式工作,则在 buttondown 函数中,您必须通过检查 CurrentPoint
属性来测试光标的位置。
关于matlab - 如何在matlab中检测按钮的按下和释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31607333/