質問編集履歴

1

わかりやすくするために質問内容を変更しました。

2017/12/23 04:43

投稿

kevin.c.michael
kevin.c.michael

スコア27

test CHANGED
File without changes
test CHANGED
@@ -1,63 +1,281 @@
1
+ **--2017 12/23 13:35 わかりやすくするために変更しました。--**
2
+
3
+   
4
+
5
+   
6
+
7
+   
8
+
1
- こんちは、kivyというライブラリ使用てい
9
+ 実行可能な具体的なコードと一緒質問編集しました
10
+
11
+
12
+
2
-
13
+ 下記のコードですが、
14
+
3
- kivyにはadd_widget()という関数があり、それを使うことでウィジェットをることきます。
15
+ **私の目標はadd_widgetしたウィジェットに対し変更を加ることです。**
16
+
17
+
18
+
4
-
19
+ 変更するウィジェットはNumberであり、プロパティは
20
+
21
+
22
+
5
-
23
+ 1. text
24
+
6
-
25
+ 2. cooooop
26
+
27
+
28
+
29
+ です。
30
+
31
+
32
+
33
+ 下記を実行すると二つのボタンがあり、
34
+
7
- かし、下記のようにコードを書い見また。
35
+ Addを押してadd_widget()し、
36
+
37
+ changeを押してWrapper内のcopを変更します。
38
+
39
+
40
+
41
+ **ですが、追加されたウィジェットは何も変化しません。**
42
+
43
+
44
+
45
+ これを追加されたウィジェットに変更を加えるにはどうすれば良いのでしょうか?
46
+
47
+
48
+
49
+ 知恵を貸してください。
50
+
51
+
52
+
53
+ よろしくお願いします。
54
+
55
+   
56
+
57
+   
58
+
59
+   
60
+
61
+
62
+
63
+
64
+
65
+
66
+
67
+
68
+
69
+
8
70
 
9
71
  ```python
10
72
 
73
+ from kivy.app import App
74
+
75
+ from kivy.uix.behaviors import ButtonBehavior
76
+
77
+ from kivy.uix.label import Label
78
+
79
+ from kivy.uix.gridlayout import GridLayout
80
+
81
+ from kivy.properties import ObjectProperty
82
+
83
+
84
+
11
- class B:
85
+ class Number(Label):
12
-
86
+
13
- pass
87
+ pass
88
+
89
+
90
+
14
-
91
+ class Wrapper(GridLayout):
92
+
15
-
93
+ pass
94
+
95
+
96
+
16
-
97
+ class Adder(ButtonBehavior, Label):
98
+
99
+ rooting = ObjectProperty(None)
100
+
101
+ def on_release(self):
102
+
103
+ self.rooting.add_widget(Number(
104
+
105
+ rooting = self.rooting,
106
+
107
+ cooooop = self.rooting.cop,
108
+
109
+ text = self.rooting.cop,
110
+
111
+ ))
112
+
113
+
114
+
115
+ class Changer(ButtonBehavior, Label):
116
+
117
+ rooting = ObjectProperty(None)
118
+
119
+ def on_release(self):
120
+
121
+ self.rooting.cop = 'Thank you'
122
+
123
+
124
+
17
- class A:
125
+ class TestApp(App):
18
-
126
+
19
- def Tekito(self):
127
+ def build(self):
128
+
20
-
129
+ pass
130
+
131
+
132
+
21
- self.add_widget(B(b = a.c))
133
+ TestApp().run()
22
134
 
23
135
  ```
24
136
 
137
+
138
+
25
139
  ```python
26
140
 
27
- #kv
141
+ #kvfile
142
+
28
-
143
+ <Number>:
144
+
145
+ font_size: sp(15)
146
+
147
+ halign: 'center'
148
+
149
+ markup: True
150
+
151
+ valign: 'top'
152
+
153
+ size_hint_y: None
154
+
155
+ text_size: self.width, sp(50)
156
+
157
+ height: sp(30)
158
+
159
+ multiline: False
160
+
161
+
162
+
163
+ <Adder>:
164
+
165
+ text: "Add"
166
+
167
+ font_size: sp(15)
168
+
169
+ halign: 'center'
170
+
171
+ markup: True
172
+
173
+ valign: 'middle'
174
+
175
+ size_hint_y: None
176
+
177
+ text_size: self.width, sp(50)
178
+
179
+ height: sp(30)
180
+
181
+ multiline: False
182
+
183
+ col: 1.000 ,0.5843 ,0.000, 1
184
+
185
+ on_release: self.col = 1.000 ,0.5843 ,0.000, 1
186
+
187
+ on_press: self.col = 1.000 ,0.5843 ,0.000, .5
188
+
189
+ canvas.before:
190
+
29
- A:
191
+ Color:
192
+
30
-
193
+ rgba: self.col
194
+
195
+ RoundedRectangle:
196
+
197
+ pos: self.pos
198
+
199
+ size: self.size
200
+
201
+ radius: [sp(12)]
202
+
203
+
204
+
205
+ <Changer>:
206
+
207
+ text: "Change"
208
+
209
+ font_size: sp(15)
210
+
211
+ halign: 'center'
212
+
213
+ markup: True
214
+
215
+ valign: 'middle'
216
+
217
+ size_hint_y: None
218
+
219
+ text_size: self.width, sp(50)
220
+
221
+ height: sp(30)
222
+
223
+ multiline: False
224
+
225
+ col: 0.000 ,0.4784 ,1.000, 1
226
+
227
+ on_release: self.col = 0.000 ,0.4784 ,1.000, 1
228
+
229
+ on_press: self.col = 0.000 ,0.4784 ,1.000, .5
230
+
231
+ canvas.before:
232
+
233
+ Color:
234
+
235
+ rgba: self.col
236
+
237
+ RoundedRectangle:
238
+
239
+ pos: self.pos
240
+
241
+ size: self.size
242
+
243
+ radius: [sp(12)]
244
+
245
+
246
+
247
+ Wrapper:
248
+
249
+ padding: 0, 300, 0, 0
250
+
251
+ pos_hint: {'top': 1, 'center_x': .5}
252
+
31
- id: a
253
+ cols: 1
254
+
32
-
255
+ size_hint: .3, None
256
+
33
- a: a
257
+ id: rooting
258
+
34
-
259
+ height: self.minimum_height
260
+
35
- c: 'aiueo'
261
+ cop: 'Change me'
262
+
36
-
263
+ spacing: 0, 50
264
+
37
- B:
265
+ Adder:
266
+
38
-
267
+ rooting: rooting
268
+
269
+ Changer:
270
+
271
+ rooting: rooting
272
+
39
- a: a
273
+ Label:
274
+
40
-
275
+ size_hint_y: None
276
+
41
- b: a.c
277
+ height: sp(40)
278
+
279
+
42
280
 
43
281
  ```
44
-
45
- この追加したBクラスのbプロパティの値を参考にして
46
-
47
- イベントを__(例えば値判定してposを1ピクセルずらすなどなんでもいいので)__発動させようとします。
48
-
49
-
50
-
51
- しかし、イベントが発動しません。
52
-
53
- また、add_widgetせずにBクラスを直書きしたものはきちんとイベント処理されます。
54
-
55
-
56
-
57
- これはwebでいうjqueryのように違った書き方をしなければ追加したウィジェットのイベントが発生しないなどの問題なのでしょうか?
58
-
59
- それとも、別な方法があったりするのでしょうか?
60
-
61
-
62
-
63
- なんとなくでも構いません、情報をお願いいたします。