回答編集履歴

2

サンプルコード追加

2021/03/09 10:51

投稿

teamikl
teamikl

スコア8722

test CHANGED
@@ -15,3 +15,65 @@
15
15
 
16
16
 
17
17
  ※ Enter キーのイベントは "<Return>"
18
+
19
+
20
+
21
+
22
+
23
+ ----
24
+
25
+ 追記: タグイベントの実装
26
+
27
+
28
+
29
+ 最低限のサンプルです。※ Focus In/Out ではなく重複して何度もイベントが発生します。
30
+
31
+
32
+
33
+ ```python
34
+
35
+ import tkinter as tk
36
+
37
+ from idlelib.redirector import WidgetRedirector
38
+
39
+
40
+
41
+ root = tk.Tk()
42
+
43
+ text = tk.Text(root)
44
+
45
+ text.grid()
46
+
47
+
48
+
49
+ def on_mark(*args):
50
+
51
+ pos = args[-1]
52
+
53
+ tags = text.tag_names(pos)
54
+
55
+ for name in tags:
56
+
57
+ text.event_generate(f"<<Tag{name.title()}Marked>>")
58
+
59
+ return original_mark(*args)
60
+
61
+
62
+
63
+ text.insert(tk.END, "TEST", "test")
64
+
65
+ text.bind("<<TagTestMarked>>", lambda e: print("TEST!"))
66
+
67
+ redirector = WidgetRedirector(text)
68
+
69
+ original_mark = redirector.register("mark", on_mark)
70
+
71
+
72
+
73
+ root.mainloop()
74
+
75
+ ```
76
+
77
+
78
+
79
+ 参考:

1

補足

2021/03/09 10:51

投稿

teamikl
teamikl

スコア8722

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- 問題点: エラーに列挙されたイベントしか使えません。
5
+ 問題点: 上記に列挙された形式のイベントしか使えません。
6
6
 
7
7
 
8
8
 
@@ -11,3 +11,7 @@
11
11
  - tag_bind で "<FocusIn>" は使えませんが、
12
12
 
13
13
  マウスポインタが上に来た時ならば "<Enter>" が該当します。
14
+
15
+
16
+
17
+ ※ Enter キーのイベントは "<Return>"