gpt4 book ai didi

wolfram-mathematica - 如何提高 EventHandler 对 MouseDragged 和 MouseClicked 事件的敏感性

转载 作者:行者123 更新时间:2023-12-04 00:13:07 25 4
gpt4 key购买 nike

使用 EventHandler,我注意到有时它认为我在拖动鼠标,即使我只是点击它。

这是一个简单的例子

 EventHandler[Graphics[Circle[{0, 0}, 1]],
"MouseClicked" :> Print["mouse clicked"],
"MouseDragged" :> Print["mouse being dragged"]
]

当我开始点击时,即使我确定鼠标完全固定不动,我只是继续点击,并查看打印消息,偶尔我会看到拖动消息出现。

我知道这可能对鼠标敏感(但我有一个很好的鼠标),甚至可能是鼠标垫、操作系统和手的任何轻微移动都可能导致此问题。

我想问问是否有人可以尝试这个,看看你是否也注意到这个问题,如果有人知道我可以在 Mathematica 中做一些设置来最小化这个问题。我一直在寻找 EventHandler 的选项来设置时间或延迟,以决定何时拖动鼠标,但什么也没看到。

这是我在运行上述代码后单击时在系统上得到的示例输出

mouse being dragged
mouse clicked
mouse clicked
mouse clicked
mouse clicked
mouse clicked
mouse clicked
mouse clicked
mouse clicked
mouse being dragged
mouse clicked
mouse clicked

这是在 Windows 7,Mathematica 8.0.1 上

谢谢

最佳答案

以下并不完美,但似乎效果更好:

initMousePos = {-1, -1};
dragged = False;
EventHandler[
Dynamic@Graphics[Circle[{0, 0}, 1]],
"MouseDown" :>
(initMousePos = MousePosition["Graphics"]),
"MouseUp" :>
If[EuclideanDistance[MousePosition["Graphics"], initMousePos] < 2 10^-1,
Print["MouseClicked " <> ToString@MousePosition["Graphics"]],
Sequence @@ {}],
"MouseDragged" :>
If[EuclideanDistance[MousePosition["Graphics"], initMousePos] > 2 10^-1,
Print["mouse being dragged " <>
ToString@MousePosition["Graphics"]], Sequence @@ {}]]

关于wolfram-mathematica - 如何提高 EventHandler 对 MouseDragged 和 MouseClicked 事件的敏感性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6660818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com