回答編集履歴

2

誤字の修正

2020/02/02 08:57

投稿

gottadiveintopy
gottadiveintopy

スコア736

test CHANGED
@@ -48,7 +48,7 @@
48
48
 
49
49
 
50
50
 
51
- Labelが持っている`text`propertyを只のclass属性で覆い隠してしまう危険なcodeです。kivyに元からあるptoprtyは必ずinstance経由で書き換えてください。
51
+ Labelが持っている`text`propertyを只のclass属性で覆い隠してしまう危険なcodeです。kivyに元からあるpropertyは必ずinstance経由で書き換えてください。
52
52
 
53
53
 
54
54
 

1

追記

2020/02/02 08:57

投稿

gottadiveintopy
gottadiveintopy

スコア736

test CHANGED
@@ -1 +1,59 @@
1
- イベント駆動型プログラミングを知っていますか?一般的にGUIアプリではCUIアプリ(ターミナルで動くアプリ)とは異なる手法をとる
1
+ イベント駆動型プログラミングを知っていますか?一般的にGUIアプリではCUIアプリ(ターミナルで動くアプリ)とは異なる手法をとる事になります。`App`classはアプリ開始時に`on_start`というeventを発生させるのでそこからやりたい事(Labelの文字列の書き換え)を始めると良いと思います。
2
+
3
+
4
+
5
+ ```
6
+
7
+ class LayoutApp(App):
8
+
9
+ def build(self):
10
+
11
+ layout = BoxLayout(orientation = "vertical")
12
+
13
+ l1 = TerminalLabel(font_size = "35sp", size_hint_y = 5)
14
+
15
+ self.l1 = l1 # Labelへの参照を保持
16
+
17
+ b1 = Button(text = "ボタン1", font_size = "20sp", size_hint_y = 0.5)
18
+
19
+ layout.add_widget(l1)
20
+
21
+ layout.add_widget(b1)
22
+
23
+ return(layout)
24
+
25
+ def on_start(self):
26
+
27
+ self.l1.text = '書き換え後の文字列'
28
+
29
+ ```
30
+
31
+
32
+
33
+ > この機能はあくまでもラベルの名称なので、リアルタイムに文字列を追加したり変更したりする用途では使用できないのだと認識しました。
34
+
35
+
36
+
37
+ それは間違いです。以下のcodeが間違いで、
38
+
39
+
40
+
41
+ ```
42
+
43
+ class TerminalLabel(Label):
44
+
45
+ text = "ここに文章を表示する"
46
+
47
+ ```
48
+
49
+
50
+
51
+ Labelが持っている`text`propertyを只のclass属性で覆い隠してしまう危険なcodeです。kivyに元からあるptoprtyは必ずinstance経由で書き換えてください。
52
+
53
+
54
+
55
+ ## recycleview
56
+
57
+
58
+
59
+ あとLabel一つにターミナルに表示する文字列を全て押し込もうとはしないで、文字列は小分けに(例えば行ごとに)してRecycleViewを使って表示させないと重くて使い物にならなくなりますね。