======Kivy: Liste des éléments graphiques Widgets de comportement et Gestion d'écrans======
**{{tagpage>kivy|Toutes les pages Kivy}}**
**[[http://translate.google.com/translate?hl=&sl=auto&tl=en&u=https%3A%2F%2Fressources.labomedia.org%2Fkivy_liste_des_elements_graphiques_widgets_de_comportement_et_gestion_d_ecrans|English Version]]**
**[[les_pages_kivy_en_details|Les pages Kivy en détails]]**
===== Screen manager =====
Gérer plusieurs écrans: options, menu ... {{media_12:screenmanager1.png?300|fig:Screenmanager1.png}}
#! /usr/bin/env python3
# -*- coding: utf-8 -*-
import kivy
kivy.require('1.8.0')
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.screenmanager import ScreenManager, Screen
class MenuScreen(Screen):
'''Lit : dans kv soit:
:
BoxLayout:
Button:
text: 'Définir les options'
on_press: root.manager.current = 'Options'
Button:
text: 'Quitter'
'''
pass
class SettingsScreen(Screen):
# Lit : dans kv
pass
class ScreenmanagerApp(App):
def build(self):
sm = ScreenManager()
# Appel de la classe qui lit kv
sm.add_widget(MenuScreen(name='Menu'))
# Appel de la classe qui lit kv
sm.add_widget(SettingsScreen(name='Options'))
# Retourne root = sm
return sm
if __name__ == '__main__':
ScreenmanagerApp().run()
#:kivy 1.8.0
:
BoxLayout:
Button:
text: 'Définir les options'
font_size: 36
on_press: root.manager.current = 'Options'
Button:
font_size: 36
text: 'Quitter'
:
BoxLayout:
Button:
text: "Mon bouton d'options"
font_size: 36
Button:
text: 'Retour au menu'
font_size: 36
on_press: root.manager.current = 'Menu'
===== Carrousel =====
Le widget Carousel fournit la vue carrousel = mobile-friendly classique où vous pouvez glisser entre les diapositives.
Il faut toujours que la doc rajoute des notions nouvelles dans l'exemples de bases: nul !
#! /usr/bin/env python3
# -*- coding: utf-8 -*-
import kivy
kivy.require('1.8.0')
from kivy.app import App
from kivy.uix.carousel import Carousel
from kivy.factory import Factory
class Example1(App):
def build(self):
carousel = Carousel(direction='right')
for i in range(4):
src = "http://placehold.it/480x270.png&text=slide-%d&.png" % i
image = Factory.AsyncImage(source=src, allow_stretch=True)
carousel.add_widget(image)
return carousel
Example1().run()
==== Avec kv, sans notions nouvelles ====
#! /usr/bin/env python3
# -*- coding: utf-8 -*-
import kivy
kivy.require('1.8.0')
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.carousel import Carousel
from kivy.clock import Clock
class Nothing:
def print_some(self, some):
print(some)
class MainScreen(Screen):
pass
class Screen1(Screen, Nothing):
def __init__(self, **kwargs):
super().__init__(**kwargs)
# Cet objet (donc self!) hérite des méthodes et attributs de Nothing
self.print_some("je suis le plus fort")
class Screen2(Screen):
pass
SCREENS = { 0: (MainScreen, "Menu"),
1: (Screen1, "Ecran 1"),
2: (Screen2, "Ecran 2")}
class Carousel_ExApp(App):
def build(self):
carousel = Carousel(direction='right')
for i in range(3):
carousel.add_widget(SCREENS[i][0](name=SCREENS[i][1]))
return carousel
if __name__ == '__main__':
Carousel_ExApp().run()
**carousel_1.kv**
#:kivy 1.8.0
:
BoxLayout:
Label:
text: 'Menu principal'
font_size: 36
:
BoxLayout:
Label:
text: 'ecran 1'
font_size: 36
:
BoxLayout:
Label:
text: 'ecran 2'
font_size: 36
{{tag> kivy python sb }}