Matlab:允许光标和键盘同时输入

时间:2014-10-19 23:22:14

标签: matlab matlab-figure

我想显示一个情节,然后等待 光标点击图,用户通过按下一个数字输入Matlab键。到目前为止,我已经知道如何单独使用这些,但我不知道如何让Matlab独立响应。我想你会称这是一种多线程形式。

单击光标时启用响应的代码如下:

h = figure( %{ ... params ...%} );
while true
    figure(h);
    cursor = ginput(1);
    % ... process the cursor input ...
end

现在,我想要包含以下行以使用户能够从键盘输入数字:

num = input('Enter the number: ' );

但是如果我只是将它添加到我的while循环中:

h = figure( %{ ... params ...%} );
while true
    figure(h);
    cursor = ginput(1);
    % ... process the cursor input ...
    num = input('Enter the number: ' ); 
    % ... process the keyboard input ...
end

然后程序将始终等待用户从键盘输入一个数字,然后返回查找光标输入。但是我希望程序能够彼此独立地做出响应。

解决方案是什么?

1 个答案:

答案 0 :(得分:0)

我不认为您可以通过ginput和输入获得所需的结果 另一种方法是在图中添加回调函数:

function mouse_and_keyboard_input()
    %set up a figure with keypress and mouseclick event
    figure('KeyPressFcn',@keyPress, 'WindowButtonDownFcn', @mouseClicked)
    plot(sin(0:0.1:2*pi));

    h_text = text(10, -0.8, 'No key pressed');
    h_mouse = text(10, -0.6, 'No mouse click');

        % Nested function: variables are shared.
        function keyPress(objectHandle, eventData)
            key = get(objectHandle,'CurrentCharacter');
            set(h_text, 'string', ['Last pressed key: ' key])
        end 
        function mouseClicked(objectHandle , eventData )
            disp('mouse clicked')
            pos = get(objectHandle,'CurrentPoint'); 
            set(h_mouse, 'string', ['Mouse click pos: ' num2str(pos)])
        end 
end 

如果单击图中,将调用 mouseClicked 功能,并显示图中的鼠标位置。 在这里,您可以添加更多代码来处理光标输入