Kivy 画面をスライドさせる(Python Kivyの取説・使い方 第9回)
画面をスライドさせる方法
今回は画面のスライドを作ってみます。Carousel(ウェジットの1つ)を使います。
Carouselとは、直訳でメリーゴーラウンドや回転式コンベヤーという意味です。スライド間でスワイプして水平または垂直に移動できます。
まずは基本的なCarouselを作ってみます。
プログラムのコード
from kivy.app import App from kivy.uix.button import Button from kivy.uix.carousel import Carousel class MainApp(App): def build(self): layout = Carousel(direction='right') for i in range(3): button = Button(text='Button ' + str(i)) layout.add_widget(button) return layout MainApp().run()
解説
layout = Carousel()
変数layoutにCarouselウェジットを作ります。
direction='right'
スライドされる方向を指定します。right、left、top、bottomが指定できます。省略すると「right」になります。
add_widget(button)
add_widgetでボタンを追加しています。(今回は「Button 0」から「Button 3」の4つです)
今度は写真(画像)でCarouselを作ってみます。
プログラムのコード
from kivy.app import App from kivy.uix.carousel import Carousel from kivy.uix.image import Image class MainApp(App): def build(self): layout = Carousel(direction='right') image = Image(source='./image/IMG_1.jpg') layout.add_widget(image) image = Image(source='./image/IMG_2.jpg') layout.add_widget(image) image = Image(source='./image/IMG_3.jpg') layout.add_widget(image) image = Image(source='./image/IMG_4.jpg') layout.add_widget(image) image = Image(source='./image/IMG_5.jpg') layout.add_widget(image) return layout MainApp().run()
なぜか縦向きの写真が横を向いてしまっています。調べるとなんとなく原因はわかりましたが時間がかかりそうなので次回にします。
最後に、kvファイルで同じように写真(画像)でCarouselを作ってみます。
プログラムのコード
from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.uix.carousel import Carousel from kivy.uix.image import Image class MainScreen(BoxLayout): pass class TestApp(App): def build(self): self.title = 'テスト' return MainScreen() if __name__ == '__main__': TestApp().run()
kvファイル(test.kv)
<MainScreen>: Carousel: #direction: 'right' direction: 'bottom' loop: True Image: source: './image/IMG_1.jpg' size: self.texture_size Image: source: './image/IMG_3.jpg' size: self.texture_size Image: source: './image/IMG_5.jpg' size: self.texture_size
解説
いつも「BoxLayout」などレイアウトを指定していたところを「Carousel」にします。あとは部品(写真や画像。ボタンやラベルでもオッケー)を作ります。
direction: 'bottom'
今度は下向きにスライドさせてみます。
loop: True
さらにループにさせました。
まとめ
Carouselを使えば画面の切り替えが楽になりそうです。例えばメニュー画面からサブメニューに切り替えたり、ゲーム画面から設定画面やマップを開いたりも出来そうです。
次回は、なぜ縦向きの写真が横を向いてしまったかを調べてみたいと思います。
保存ファイル
lesson61.py
lesson62.py
lesson63.py
test.kv
文責:Luke