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

質問編集履歴

4

pass

2017/12/08 12:29

投稿

kevin.c.michael
kevin.c.michael

スコア27

title CHANGED
File without changes
body CHANGED
@@ -19,6 +19,7 @@
19
19
 
20
20
  class Scroll_B(ScrollView):
21
21
  def on_scroll_move(self, touch):
22
+ pass
22
23
 
23
24
  Mykv = '''
24
25
  GridLayout:

3

文章変更コード追加

2017/12/08 12:29

投稿

kevin.c.michael
kevin.c.michael

スコア27

title CHANGED
File without changes
body CHANGED
@@ -1,9 +1,58 @@
1
- KivyのScrollViewが複数あったとして、それらのスクロール量を同期させるためのコードを書いているのですが、問題がありま
1
+ KivyのScrollViewが複数あったとして、それらのスクロール量を同期させるためのコードを書いているのですが、リアルタイムで同期るにはどのようなコードを書けば良いですか?
2
- じめ複数scrollviewのち一つからscroll_yを取得し、もう一方のscrollview値を渡してやばうまくいくものと思っした。
2
+ 私のコードでは、下記scroll_yを別なscrollview値をれてますが、
3
- 問題は、のスクロールには慣性があタッチを離した後でもしばしスクロールが行われているので、on_touch_moveは使えないとことです
3
+ うすると、まずスクロールがおかしくります。たどたどしいと
4
- on_scroll_moveもありましたが、こをscrollviewクラス内で適用するとスクロールているのに画面が動かないというおかしな事態になってしいます
4
+ タッチアップし、再度タッチしなければscroll_yが同期されせん
5
5
 
6
- 慣性が問題なのですが、どのように解決すれば良のでょうか?
6
+ 回答お願いします。
7
- というより、値をモーションイベントあるなしにかかわらず、常に監視し、変更があった場合にのみscroll_yを取得するような方法はありますか?
8
7
 
8
+ 簡単なサンプルコードを追加しました。
9
- 回答お願いします。
9
+ ```python
10
+ from kivy.app import App
11
+ from kivy.lang import Builder
12
+ from kivy.uix.scrollview import ScrollView
13
+ from kivy.properties import ObjectProperty
14
+
15
+ class Scroll_A(ScrollView):
16
+ scroll_b = ObjectProperty(None)
17
+ def on_scroll_move(self, touch):
18
+ self.scroll_b.scroll_y = self.scroll_y
19
+
20
+ class Scroll_B(ScrollView):
21
+ def on_scroll_move(self, touch):
22
+
23
+ Mykv = '''
24
+ GridLayout:
25
+ cols: 2
26
+ spacing: 100, 100
27
+ padding: 50, 50, 50, 50
28
+ Scroll_A:
29
+ id: scroll_a
30
+ scroll_b: scroll_b
31
+ do_scroll_y: True
32
+ pos_hint: {'top': 1}
33
+ Label:
34
+ size_hint_y: None
35
+ text_size: self.width, None
36
+ color: 1,1,1,1
37
+ height: self.texture_size[1]
38
+ text: 'X' * 1000
39
+ Scroll_B:
40
+ id: scroll_b
41
+ do_scroll_y: True
42
+ pos_hint: {'top': 1}
43
+ Label:
44
+ size_hint_y: None
45
+ text_size: self.width, None
46
+ color: 1,1,1,1
47
+ height: self.texture_size[1]
48
+ text: 'Y' * 1000
49
+ '''
50
+
51
+ class MyApp(App):
52
+
53
+ def build(self):
54
+ return Builder.load_string(Mykv)
55
+
56
+ if __name__ == '__main__':
57
+ MyApp().run()
58
+ ```

2

タグ追加

2017/12/08 12:04

投稿

kevin.c.michael
kevin.c.michael

スコア27

title CHANGED
File without changes
body CHANGED
File without changes

1

修正

2017/12/08 11:32

投稿

kevin.c.michael
kevin.c.michael

スコア27

title CHANGED
File without changes
body CHANGED
@@ -2,5 +2,8 @@
2
2
  はじめ、複数のscrollviewのうち一つからscroll_yを取得し、もう一方のscrollviewへ値を渡してやればうまくいくものと思っていました。
3
3
  問題は、このスクロールには慣性があることで、タッチを離した後でもしばしスクロールが行われているので、on_touch_moveは使えないと言うことです。
4
4
  on_scroll_moveもありましたが、これをscrollviewクラス内で適用すると、スクロールしているのに、画面が動かないというおかしな事態になってしまいます。
5
+
5
6
  慣性が問題なのですが、どのように解決すれば良いのでしょうか?
7
+ というより、値をモーションイベントあるなしにかかわらず、常に監視し、変更があった場合にのみscroll_yを取得するような方法はありますか?
8
+
6
9
  回答お願いします。