teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

コードの間違いを修正

2021/11/25 11:23

投稿

teamikl
teamikl

スコア8817

answer CHANGED
@@ -76,7 +76,7 @@
76
76
 
77
77
  ## 問題個所 ... 毎回ツールチップを生成する
78
78
  def onSelect(event):
79
- tooltip = CreateToolTip(combo, combo.get()).showtip()
79
+ tooltip = CreateToolTip(combo, combo.get())
80
80
 
81
81
  combo.bind("<<ComboboxSelected>>", onSelect)
82
82
  root.mainloop()

3

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

2021/11/25 11:23

投稿

teamikl
teamikl

スコア8817

answer CHANGED
@@ -57,4 +57,49 @@
57
57
  ```
58
58
 
59
59
  ウィジェット生成時に name= オプションで任意の名前を付けられ、
60
- nametowidgetメソッドで任意の名前のtkinterのオブジェクトにアクセスできます。
60
+ nametowidgetメソッドで任意の名前のtkinterのオブジェクトにアクセスできます。
61
+
62
+ ----
63
+
64
+ 想定するツールチップが残り続ける問題のあるコード
65
+ ```python
66
+
67
+ import tkinter as tk
68
+ from tkinter import ttk
69
+
70
+ # ここで class CreateToolTip を定義 (投稿時の文字数制限のため省略)
71
+ from tooltip import CreateToolTip
72
+
73
+ root = tk.Tk()
74
+ combo = ttk.Combobox(root, values=["ITEM01", "ITEM02"])
75
+ combo.pack()
76
+
77
+ ## 問題個所 ... 毎回ツールチップを生成する
78
+ def onSelect(event):
79
+ tooltip = CreateToolTip(combo, combo.get()).showtip()
80
+
81
+ combo.bind("<<ComboboxSelected>>", onSelect)
82
+ root.mainloop()
83
+ ```
84
+
85
+ コメントの別案として提示した解消法
86
+ ```python
87
+
88
+ import tkinter as tk
89
+ from tkinter import ttk
90
+
91
+ # ここで class CreateToolTip を定義 (投稿時の文字数制限のため省略)
92
+ from tooltip import CreateToolTip
93
+
94
+ root = tk.Tk()
95
+ combo = ttk.Combobox(root, values=["ITEM01", "ITEM02"])
96
+ combo.pack()
97
+
98
+ ## 解決案
99
+ tooltip = CreateToolTip(combo) # 予め作成しておく
100
+ def onSelect(event):
101
+ tooltip.text = event.widget.get() # ToolTip の内容のみ変更
102
+
103
+ combo.bind("<<ComboboxSelected>>", onSelect)
104
+ root.mainloop()
105
+ ```

2

tcl/tk の識別名について補足

2021/11/25 06:41

投稿

teamikl
teamikl

スコア8817

answer CHANGED
@@ -40,6 +40,7 @@
40
40
  button = tk.Button(frame)
41
41
 
42
42
  # tcl/tk 側での識別名、特に指定がない場合は 2つ目以降は連番
43
+ # ファイルのフルパスの様な、ドット区切りの階層表記
43
44
  print(root) # .
44
45
  print(frame) # .!frame
45
46
  print(button) # .!frame.!button

1

markdown修正

2021/11/24 23:29

投稿

teamikl
teamikl

スコア8817

answer CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  としたのであれば、削除は `cmbox_key_ttp.hidetip()` です。
8
8
 
9
- 問題点: 本来は '<Enter>' `<Leave>` イベントで非表示になるのですが、
9
+ 問題点: 本来は `<Enter>` `<Leave>` イベントで非表示になるのですが、
10
10
  他のイベントをトリガーに表示させた場合、マウスカーソルが予め対象のウィジェットの枠外にある場合、
11
11
  想定された挙動になりません。
12
12