回答編集履歴
4
コードの間違いを修正
test
CHANGED
@@ -154,7 +154,7 @@
|
|
154
154
|
|
155
155
|
def onSelect(event):
|
156
156
|
|
157
|
-
tooltip = CreateToolTip(combo, combo.get())
|
157
|
+
tooltip = CreateToolTip(combo, combo.get())
|
158
158
|
|
159
159
|
|
160
160
|
|
3
想定する問題を起こすコードと解決案のコードを追記
test
CHANGED
@@ -117,3 +117,93 @@
|
|
117
117
|
ウィジェット生成時に name= オプションで任意の名前を付けられ、
|
118
118
|
|
119
119
|
nametowidgetメソッドで任意の名前のtkinterのオブジェクトにアクセスできます。
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
----
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
想定するツールチップが残り続ける問題のあるコード
|
128
|
+
|
129
|
+
```python
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
import tkinter as tk
|
134
|
+
|
135
|
+
from tkinter import ttk
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
+
# ここで class CreateToolTip を定義 (投稿時の文字数制限のため省略)
|
140
|
+
|
141
|
+
from tooltip import CreateToolTip
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
root = tk.Tk()
|
146
|
+
|
147
|
+
combo = ttk.Combobox(root, values=["ITEM01", "ITEM02"])
|
148
|
+
|
149
|
+
combo.pack()
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
## 問題個所 ... 毎回ツールチップを生成する
|
154
|
+
|
155
|
+
def onSelect(event):
|
156
|
+
|
157
|
+
tooltip = CreateToolTip(combo, combo.get()).showtip()
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
combo.bind("<<ComboboxSelected>>", onSelect)
|
162
|
+
|
163
|
+
root.mainloop()
|
164
|
+
|
165
|
+
```
|
166
|
+
|
167
|
+
|
168
|
+
|
169
|
+
コメントの別案として提示した解消法
|
170
|
+
|
171
|
+
```python
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
import tkinter as tk
|
176
|
+
|
177
|
+
from tkinter import ttk
|
178
|
+
|
179
|
+
|
180
|
+
|
181
|
+
# ここで class CreateToolTip を定義 (投稿時の文字数制限のため省略)
|
182
|
+
|
183
|
+
from tooltip import CreateToolTip
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
root = tk.Tk()
|
188
|
+
|
189
|
+
combo = ttk.Combobox(root, values=["ITEM01", "ITEM02"])
|
190
|
+
|
191
|
+
combo.pack()
|
192
|
+
|
193
|
+
|
194
|
+
|
195
|
+
## 解決案
|
196
|
+
|
197
|
+
tooltip = CreateToolTip(combo) # 予め作成しておく
|
198
|
+
|
199
|
+
def onSelect(event):
|
200
|
+
|
201
|
+
tooltip.text = event.widget.get() # ToolTip の内容のみ変更
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
combo.bind("<<ComboboxSelected>>", onSelect)
|
206
|
+
|
207
|
+
root.mainloop()
|
208
|
+
|
209
|
+
```
|
2
tcl/tk の識別名について補足
test
CHANGED
@@ -82,6 +82,8 @@
|
|
82
82
|
|
83
83
|
# tcl/tk 側での識別名、特に指定がない場合は 2つ目以降は連番
|
84
84
|
|
85
|
+
# ファイルのフルパスの様な、ドット区切りの階層表記
|
86
|
+
|
85
87
|
print(root) # .
|
86
88
|
|
87
89
|
print(frame) # .!frame
|
1
markdown修正
test
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
|
16
16
|
|
17
|
-
問題点: 本来は
|
17
|
+
問題点: 本来は `<Enter>` `<Leave>` イベントで非表示になるのですが、
|
18
18
|
|
19
19
|
他のイベントをトリガーに表示させた場合、マウスカーソルが予め対象のウィジェットの枠外にある場合、
|
20
20
|
|