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

回答編集履歴

2

追記

2018/05/12 09:46

投稿

KSwordOfHaste
KSwordOfHaste

スコア18406

answer CHANGED
@@ -16,4 +16,46 @@
16
16
  その値は(A1)の内容になる
17
17
  (B) 他のラベルのtextvariableに1が指定されたとき
18
18
  (B1) textオプションは無視される
19
- (B2) 初期テキストは(A2)で生成されたStringVarの内容となる
19
+ (B2) 初期テキストは(A2)で生成されたStringVarの内容となる
20
+
21
+ ---
22
+ 追記:質問者さんがやりたいことが今一つピンときてはいないのですが、ウィジェットの標準的なプロパティとは別にアプリケーションで固有の情報をウィジェットに結び付けておきたいと解釈しました。どうするのがベストか自信ないですが、以下の例では「userOwnValue」という名前でアプリケーション固有情報をウィジェットの属性として直接設定してしまう例です。tkinter.Labelの派生クラスを定義してその中に`__value`のようなtkinterと絶対に衝突しない名前を定義すると安全とは思いますがそこまで厳密にすべきかどうか自分にはわかりませんでした。
23
+
24
+ ```python
25
+ import tkinter as tk
26
+
27
+
28
+ root = tk.Tk()
29
+ size = 40
30
+
31
+ labelB = None
32
+
33
+
34
+ def on_click_common(event):
35
+ print('text of clicked label =', event.widget['text'])
36
+ print('userOwnValue of the label =', event.widget.userOwnValue)
37
+
38
+
39
+ def on_click_a(event):
40
+ global labelB
41
+ if labelB is None:
42
+ # まだlabelBを生成してない場合のみ生成する
43
+ labelB = tk.Label(root, text="×", font=size)
44
+ labelB.userOwnValue = 2
45
+ labelB.place(x=size)
46
+ labelB.bind("<1>", on_click_b)
47
+ on_click_common(event)
48
+
49
+
50
+ def on_click_b(event):
51
+ on_click_common(event)
52
+
53
+
54
+ labelA = tk.Label(root, text="○", font=size)
55
+ labelA.userOwnValue = 1
56
+ labelA.place(x=0)
57
+ labelA.bind("<1>", on_click_a)
58
+
59
+
60
+ tk.mainloop()
61
+ ```

1

追記

2018/05/12 09:46

投稿

KSwordOfHaste
KSwordOfHaste

スコア18406

answer CHANGED
File without changes