回答編集履歴

2

間違った回答を削除

2018/05/12 09:45

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -50,82 +50,4 @@
50
50
 
51
51
  ---
52
52
 
53
- 追記質問者さんがやりたいことが今一つピンときはいないのですが、ウィジェッの標準的なプロパティとは別にアプリケーションで固有の情報ウィジェットに結び付けおきたいと解釈しました。どうするのがベストか自信ないですが、以下の例では「userOwnValue」という名前でアプリケーション固有情報をウィジェットの属性とて直接設定してしう例です。tkinter.Labelの派生クラスを定義てその中に`__value`のようなtkinterと絶対に衝突しない名前を定義すると安全とは思いますがそこまで厳密にすべきかどうか自分にはわかりませんでした。
54
-
55
-
56
-
57
- ```python
58
-
59
- import tkinter as tk
60
-
61
-
62
-
63
-
64
-
65
- root = tk.Tk()
66
-
67
- size = 40
68
-
69
-
70
-
71
- labelB = None
72
-
73
-
74
-
75
-
76
-
77
- def on_click_common(event):
78
-
79
- print('text of clicked label =', event.widget['text'])
80
-
81
- print('userOwnValue of the label =', event.widget.userOwnValue)
82
-
83
-
84
-
85
-
86
-
87
- def on_click_a(event):
88
-
89
- global labelB
90
-
91
- if labelB is None:
92
-
93
- # まだlabelBを生成してない場合のみ生成する
94
-
95
- labelB = tk.Label(root, text="×", font=size)
96
-
97
- labelB.userOwnValue = 2
98
-
99
- labelB.place(x=size)
100
-
101
- labelB.bind("<1>", on_click_b)
102
-
103
- on_click_common(event)
104
-
105
-
106
-
107
-
108
-
109
- def on_click_b(event):
110
-
111
- on_click_common(event)
112
-
113
-
114
-
115
-
116
-
117
- labelA = tk.Label(root, text="○", font=size)
118
-
119
- labelA.userOwnValue = 1
120
-
121
- labelA.place(x=0)
122
-
123
- labelA.bind("<1>", on_click_a)
124
-
125
-
126
-
127
-
128
-
129
- tk.mainloop()
130
-
131
- ```
53
+ 訂正間違っ関係ないコメントを追記してしまいました。大変失礼しました。

1

追記

2018/05/12 09:45

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -45,3 +45,87 @@
45
45
  `Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=utf8`
46
46
 
47
47
  というメッセージが出てしまう点、悲しいものがあります。それでも、オプションを一々指定することに比べればましではないでしょうか?
48
+
49
+
50
+
51
+ ---
52
+
53
+ 追記:質問者さんがやりたいことが今一つピンときてはいないのですが、ウィジェットの標準的なプロパティとは別にアプリケーションで固有の情報をウィジェットに結び付けておきたいと解釈しました。どうするのがベストか自信ないですが、以下の例では「userOwnValue」という名前でアプリケーション固有情報をウィジェットの属性として直接設定してしまう例です。tkinter.Labelの派生クラスを定義してその中に`__value`のようなtkinterと絶対に衝突しない名前を定義すると安全とは思いますがそこまで厳密にすべきかどうか自分にはわかりませんでした。
54
+
55
+
56
+
57
+ ```python
58
+
59
+ import tkinter as tk
60
+
61
+
62
+
63
+
64
+
65
+ root = tk.Tk()
66
+
67
+ size = 40
68
+
69
+
70
+
71
+ labelB = None
72
+
73
+
74
+
75
+
76
+
77
+ def on_click_common(event):
78
+
79
+ print('text of clicked label =', event.widget['text'])
80
+
81
+ print('userOwnValue of the label =', event.widget.userOwnValue)
82
+
83
+
84
+
85
+
86
+
87
+ def on_click_a(event):
88
+
89
+ global labelB
90
+
91
+ if labelB is None:
92
+
93
+ # まだlabelBを生成してない場合のみ生成する
94
+
95
+ labelB = tk.Label(root, text="×", font=size)
96
+
97
+ labelB.userOwnValue = 2
98
+
99
+ labelB.place(x=size)
100
+
101
+ labelB.bind("<1>", on_click_b)
102
+
103
+ on_click_common(event)
104
+
105
+
106
+
107
+
108
+
109
+ def on_click_b(event):
110
+
111
+ on_click_common(event)
112
+
113
+
114
+
115
+
116
+
117
+ labelA = tk.Label(root, text="○", font=size)
118
+
119
+ labelA.userOwnValue = 1
120
+
121
+ labelA.place(x=0)
122
+
123
+ labelA.bind("<1>", on_click_a)
124
+
125
+
126
+
127
+
128
+
129
+ tk.mainloop()
130
+
131
+ ```