EventHandler[expr,{"event1":>action1,"event2":>action2,…}]
"eventi"が expr との関連で起ったときは常に,actioniを評価し expr として表示する.
EventHandler
EventHandler[expr,{"event1":>action1,"event2":>action2,…}]
"eventi"が expr との関連で起ったときは常に,actioniを評価し expr として表示する.
詳細とオプション
- 標準的なマウス関連のイベント指定には次のようなものがある.
-
"MouseClicked" マウスを動かさずにクリック {"MouseClicked",i} マウスボタン i を動かさずにクリック "MouseDown" マウスの主ボタンを押す {"MouseDown",i} マウスボタン i を押す "MouseDragged" 主ボタンを押しながらマウスを動かす {"MouseDragged",i} マウスボタン i を押しながらマウスを動かす "MouseMoved" expr で定義された領域内でマウスを動かす "MouseUp" マウスの主ボタンを離す {"MouseUp",i} マウスボタン i を離す - マウスイベントに関しては,expr の表示によって定義された長方形の領域内のマウスについてはEventHandler[expr, …]がイベントを扱う.
- 標準的なキーボード関連イベント指定には次のようなものがある.
-
"KeyDown" キーボード上の任意のキーを押す {"KeyDown","x"} x キーを押す "ReturnKeyDown"
キーあるいは
キーを押す"EscapeKeyDown"
キーを押す"LeftArrowKeyDown" 左矢印キーを押す "RightArrowKeyDown" 右矢印キーを押す "UpArrowKeyDown" 上向き矢印キーを押す "DownArrowKeyDown" 下向き矢印キーを押す - 標準的なインターフェースイベントには次のようなものがある.
-
{"MenuCommand","name"} 指定された名前を選んで使うメニューコマンド "WindowClose" ウィンドウを閉じる要求 - MousePositionやCurrentValueのような関数が特定の actioni で評価された場合,これらが与える値は actioni を引き起したイベントと関連する.
- EventHandlerの式がネストしている場合,デフォルトでイベントはすべての式に共有され,最も内側の式が最初に特定のイベントを処理する.
- 次のオプションを使うことができる.
-
Method "Preemptive" 使用する評価メソッド PassEventsDown Automatic より内側のイベントハンドラにイベントを渡すかどうか PassEventsUp True より外側のイベントハンドラにイベントを渡すかどうか - Methodオプションのよく使われる可能な設定には,"Preemptive"と"Queued"がある.
- デフォルト設定のPassEventsDown->Automaticでは,EventHandlerが扱うイベントは,Wolframシステムフロントエンドの組込みのイベントハンドラには渡されない.
例題
すべて開く すべて閉じる例 (2)
DynamicModule[{col = Green}, EventHandler[Style["テキスト", FontColor -> Dynamic[col]], {"MouseClicked" :> (col = Red)}]]DynamicModule[{col = Green}, EventHandler[Style["テキスト", FontColor -> Dynamic[col]], {"MouseClicked" :> (col = col /. {Red -> Green, Green -> Red})}]]スコープ (1)
DynamicModule[{col = Green}, EventHandler[Dynamic[Graphics[{col, Disk[]}, ImageSize -> Tiny]], {"MouseClicked" :> (col = col /. {Red -> Green, Green -> Red})}]]マウスボタンが押されている間だけ色が変わるグラフィックスを作る:
DynamicModule[{col = Green}, EventHandler[Dynamic[Graphics[{col, Disk[]}, ImageSize -> Tiny]], {"MouseDown" :> (col = col /. {Red -> Green, Green -> Red}),
"MouseUp" :> (col = col /. {Red -> Green, Green -> Red})}]]オプション (5)
Method (1)
デフォルトで,イベントハンドラはプリエンプティブリンク上で評価され,5秒後にタイムアウトする:
DynamicModule[{a = "start"}, {EventHandler[Panel["does time out"], "MouseClicked" :> (Pause[6];a = "end")], Dynamic[a]}]Method->"Queued"を使って,決してタイムアウトしないメインリンク上でボタン関数を評価する:
DynamicModule[{a = "start"}, {EventHandler[Panel["does not time out"], "MouseClicked" :> (Pause[6];a = "end"), Method -> "Queued"], Dynamic[a]}]PassEventsDown (2)
位置同様色も変えて,イベントがより内側のイベントハンドラに渡されることを認める:
DynamicModule[{p = {0, 0}, c = Green}, EventHandler[EventHandler[Framed@Dynamic[Graphics[{c, Disk[p, 0.2]}, PlotRange -> 2]], {"MouseDown" :> (c = c /. {Red -> Green, Green -> Red})}], {"MouseDown" :> (p = MousePosition["Graphics"])}, PassEventsDown -> True]]DynamicModule[{p = {0, 0}, c = Green}, EventHandler[EventHandler[Framed@Dynamic[Graphics[{c, Disk[p, 0.2]}, PlotRange -> 2]], {"MouseDown" :> (c = c /. {Red -> Green, Green -> Red})}], {"MouseDown" :> (p = MousePosition["Graphics"])}, PassEventsDown -> False]]PassEventsUp (2)
デフォルトで,ネストしたEventHandlerアクションは指定されたアクションで実行される:
DynamicModule[{i = 1, j = 1}, Style[EventHandler[Framed@{Dynamic[i], EventHandler[Framed[Dynamic[j]], "MouseDown" :> ++j]}, "MouseDown" :> ++i], 36]]PassEventsUpを無効にすると外側のEventHandlerアクションの実行を妨げることができる:
DynamicModule[{i = 1, j = 1}, Style[EventHandler[Framed@{Dynamic[i], EventHandler[Framed[Dynamic[j]], "MouseDown" :> ++j, PassEventsUp -> False]}, "MouseDown" :> ++i], 36]]
キーが押されたときに外側のEventHandlerアクションが実行されるようにする:
DynamicModule[{i = 1, j = 1}, Style[EventHandler[Framed@{Dynamic[i], EventHandler[Framed[Dynamic[j]], "MouseDown" :> ++j, PassEventsUp :> CurrentValue["ShiftKey"]]}, "MouseDown" :> ++i], 36]]アプリケーション (2)
lineFit[points_, {{xmin_, xmax_}, {ymin_, ymax_}}] := Module[{x, lf}, lf = Function@@{{x}, Fit[points, {x, 1}, {x}]};
Line[{{xmin, lf[xmin]}, {xmax, lf[xmax]}}]];DynamicModule[{p = {}, l = {}},
EventHandler[Dynamic@Graphics[{Point[p], l}, PlotRange -> 1, Frame -> True], "MouseDown" :> (AppendTo[p, MousePosition["Graphics"]];
If[Length[p] ≥ 2, l = lineFit[p, {{-1, 1}, {-1, 1}}]])]]interpolationCurve[p_, n_] := Module[{f = Interpolation[p, InterpolationOrder -> n ]}, First@Plot[Evaluate@f[x], {x, Min[p[[All, 1]]], Max[p[[All, 1]]]}]];DynamicModule[{n = 2, p = {}, c = {}},
EventHandler[Dynamic@Graphics[{Point[p], c}, PlotRange -> 1, Frame -> True],
"MouseDown" :>
(p = Union[Sort@Append[p, MousePosition["Graphics"]], SameTest -> (First[#1] == First[#2]&)];
If[Length[p] ≥ n + 1, c = interpolationCurve[p, n]])]]特性と関係 (1)
EventHandlerはMousePositionとともに使うことができる:
DynamicModule[{pos = {0, 0}}, EventHandler[Framed@Graphics[{Disk[Dynamic[pos], 0.2]}, PlotRange -> 2], {"MouseDown" :> (pos = MousePosition["Graphics"])}]]おもしろい例題 (4)
クリックしてBSplineCurveに点を加える:
DynamicModule[{pts = {}, down = False},
EventHandler[
Graphics[{Thickness[.03], Red,
BSplineCurve[Dynamic[pts]]}, PlotRange -> 1, Frame -> True, FrameTicks -> False],
{"MouseDown" :> (AppendTo[pts, MousePosition["Graphics"]];
down = True), "MouseMoved" :> If[down, AppendTo[pts,
MousePosition["Graphics"]]], "MouseUp" :> (down = False)}]]Graphics3D[DynamicModule[{b = False}, EventHandler[Cone[Dynamic[{{4, 4, 0}, {4, 4, If[b, -2, 2]}}]], {"MouseDown" :> (b = !b)}]], PlotRange -> {Automatic, Automatic, {-2, 2}}]リストにマウスオーバーするとリスト中の素数がハイライトされる:
DynamicModule[{f = Identity}, (EventHandler[Dynamic[Row[f[#1]& /@ Range[15], ","]], {"MouseEntered" :> (f = Function[{y}, If[PrimeQ[y], Style[y, Red], y]]), "MouseExited" :> (f = Identity)}])]DynamicModule[{obj = {}, x},
EventHandler[
EventHandler[Dynamic[If[x < 1, x = x + .01];Graphics[{obj, Orange, Disk[{0, 0}, .2]}, PlotRange -> 1]], {"MouseClicked" :> (obj = {Dynamic[Table[{Circle[{0, 0}, n Dynamic[x]]}, {n, 3}]]};Beep[])}], {"MouseDown" :> (x = 0)}, PassEventsDown -> False]]テクニカルノート
テキスト
Wolfram Research (2007), EventHandler, Wolfram言語関数, https://reference.wolfram.com/language/ref/EventHandler.html (2008年に更新).
CMS
Wolfram Language. 2007. "EventHandler." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2008. https://reference.wolfram.com/language/ref/EventHandler.html.
APA
Wolfram Language. (2007). EventHandler. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/EventHandler.html
BibTeX
@misc{reference.wolfram_2026_eventhandler, author="Wolfram Research", title="{EventHandler}", year="2008", howpublished="\url{https://reference.wolfram.com/language/ref/EventHandler.html}", note=[Accessed: 16-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_eventhandler, organization={Wolfram Research}, title={EventHandler}, year={2008}, url={https://reference.wolfram.com/language/ref/EventHandler.html}, note=[Accessed: 16-September-2026]}