スライドで切り替えるウィジット
2015/10/28
Python 2.7.9, Kivy 1.9.0
Carouselスワイプでスライドするウィジェット。かっこいいよね。
Screen Managerは全体を切り替えるのに対し、一部をスライドさせたいときに使うっぽい。
イベントを記述しなくても、スワイプ操作してくれたりする。
KvファイルでCarouselを使う
# -*- coding: utf-8 -*-
from kivy.app import App
from kivy.uix.carousel import Carousel
from kivy.uix.gridlayout import GridLayout
from kivy.lang import Builder
kv = '''
Carousel:
GridLayout
cols: 3
Button
text: 'prev'
on_release:
root.load_previous()
Label:
text: 'Page1'
Button
text: 'next'
on_release:
root.load_next()
GridLayout
cols: 3
Button
text: 'prev'
on_release:
root.load_previous()
Label:
text: 'Page2'
Button
text: 'next'
on_release:
root.load_next()
GridLayout
cols: 3
Button
text: 'prev'
on_release:
root.load_previous()
Label:
text: 'Page3'
Button
text: 'next'
on_release:
root.load_next()
'''
class TestApp(App):
def build(self):
return Builder.load_string(kv)
if __name__ == '__main__':
TestApp().run()
10ページのパターン
# -*- coding: utf-8 -*-
from kivy.app import App
from kivy.uix.carousel import Carousel
from kivy.uix.gridlayout import GridLayout
from kivy.properties import StringProperty
from kivy.lang import Builder
Builder.load_string('''
<Page>:
cols: 3
Button
text: 'prev'
on_release:
root.parent.parent.load_previous()
Label:
text: root.page_name
Button
text: 'next'
on_release:
root.parent.parent.load_next()
''')
class Page(GridLayout):
page_name = StringProperty()
def __init__(self,no):
super(Page,self).__init__()
self.page_name = 'Page ' + str(no)
class MyApp(App):
def build(self):
root = Carousel()
for i in range(10):
root.add_widget(Page(i+1))
return root
if __name__ == '__main__':
MyApp().run()
kivy/carousel_buttons.py at master - kivy/kivy - GitHub
https://github.com/kivy/kivy/blob/master/examples/widgets/carousel_buttons.py