Как сделать так, чтобы кнопка мыши была переключена?

Мне нужно создать элемент управления, подобный переключателю, который выполняет какое-то действие , когда мышь проходит над ним, и выполняет другое действие, когда покидает кнопку, но ничего не делает, пока мышь наведена и движется.

Чтобы прояснить, недостаточно просто узнать, находится ли мышь над областью или нет, но он должен запускать некоторый код только , когда мышь входит и покидает область. . (пояснение запрошено Сабольчем)

К сожалению, параметр AutoAction кнопки Button ведет себя иначе: он постоянно пытается выполнить действие , пока мышь перемещается внутри объекта:

switch = False;
Button["Hover", switch = ! switch, AutoAction -> True]
Dynamic[switch]

С другой стороны, простая команда Mouseover не может выполнять код, который выполняется каждый раз, когда мышь покидает объект:

in = out = 0;
Mouseover[
 Dynamic["out", (in++) &],
 Dynamic["in", (out++) &]
 ]
Dynamic[Column[{in, out}]]

Я думал, что второй аргумент ] Dynamic можно было использовать для определения начальных и конечных действий для объекта Mouseover , но и этот подход не принес успеха.

start = end = False;
Dynamic[Mouseover["out", "in"], {(start = True) &, Null, (end = True) &}]
Dynamic[Column[{start, end}]]

Есть идеи?

8
задан István Zachar 9 January 2012 в 17:17
поделиться