回答編集履歴

4

コードの間違いを修正

2021/11/25 11:23

投稿

teamikl
teamikl

スコア8664

test CHANGED
@@ -154,7 +154,7 @@
154
154
 
155
155
  def onSelect(event):
156
156
 
157
- tooltip = CreateToolTip(combo, combo.get()).showtip()
157
+ tooltip = CreateToolTip(combo, combo.get())
158
158
 
159
159
 
160
160
 

3

想定する問題を起こすコードと解決案のコードを追記

2021/11/25 11:23

投稿

teamikl
teamikl

スコア8664

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 の識別名について補足

2021/11/25 06:41

投稿

teamikl
teamikl

スコア8664

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修正

2021/11/24 23:29

投稿

teamikl
teamikl

スコア8664

test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
 
16
16
 
17
- 問題点: 本来は '<Enter>' `<Leave>` イベントで非表示になるのですが、
17
+ 問題点: 本来は `<Enter>` `<Leave>` イベントで非表示になるのですが、
18
18
 
19
19
  他のイベントをトリガーに表示させた場合、マウスカーソルが予め対象のウィジェットの枠外にある場合、
20
20