Python

python kivy スクロールビュー

2017年10月6日

kivyスクロール

今回はスクロールビューについて書いていきます。

レイアウトの範囲をオーバーフローした場合にスクロールが発生します。

この設定をしないと、表示が切れたりするので設定しましょう。

スクロールの設定

スクロールの設定を行うには、ScrollViewを利用します。

実行ファイル

''' sample scrollview '''
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.scrollview import ScrollView
from kivy.core.window import Window


class MyApp(App):
    """
    MyApp here
        :param App:
    """

    def build(self):
        """
        build here
            :param self:
        """

        layout = BoxLayout(size_hint=(1, None))
        layout.orientation = 'vertical'

        layout.bind(minimum_height=layout.setter('height'))
        for i in range(30):
            data = 'test' + str(i)
            btn = Button(text=data, height=30, size_hint=(1, None))
            layout.add_widget(btn)

        root = ScrollView(size_hint=(1, None), size=(
            Window.width, Window.height))

        root.add_widget(layout)

        return root


if __name__ == '__main__':
    MyApp().run()

コード説明

・モジュールはScrollViewをインポートします。
・BoxLayoutのsize_hintのY軸を範囲を指定解除する
・orientationで水平を垂直に変更
・bindでイベントを発火させる
 この指定でheightをスクロール出来る様にしている。
・forで範囲をオーバーフローさせる為に使ってるだけ
・ScrollViewでsize_hintをY軸をNoneにする
 この指定も必要だと思う(説明雑w)。

画面表示確認

python3.6.2 kivy スクロールビュー

今回ボタンで試してみましたが、スクロール後にタップを行うとイベント発火してくれません。

バグなのか設定が足りないのか調査します。

まとめ

kivyで画面にスクロール表示させるには、ScrollViewモジュールをインポートして利用します。

今回簡単な表示のために作りましたが、複雑な事とかしたいと思う方はいろいろ試してみると良いかと思います。

-Python
-,