import App from kivy.uix.button import Button from kivy.uix.boxlayout import BoxLayout class SimpleApp(App): def build(self): layout = BoxLayout(orientation='vertical') btn = Button(text='Hello World') btn1 = Button(text="Welcome to edureka") layout.add_widget(btn) layout.add_widget((btn1)) return layout if __name__ == "__main__": SimpleApp().run()
Disposition du flotteur
Il honore les propriétés size_hint et pos_hint de ses widgets enfants.
from kivy.app import App
from kivy.uix.scatter import Scatter
from kivy.uix.label import Label
from kivy.uix.floatlayout import FloatLayout
class SimpleApp(App):
def build(self):
f = FloatLayout()
s = Scatter()
l = Label(text="Edureka!", font_size=150)
f.add_widget(s)
s.add_widget(l)
return f
if __name__ == "__main__":
SimpleApp().run()
Disposition de la grille
Il organise les widgets enfants dans une boîte.
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.gridlayout import GridLayout
class SimpleApp(App):
def build(self):
layout = GridLayout(cols=2)
layout.add_widget(Button(text='hello'))
layout.add_widget(Button(text='world'))
layout.add_widget(Button(text='welcome to'))
layout.add_widget(Button(text='edureka'))
return layout
if __name__ == "__main__":
SimpleApp().run()
Mise en page
Il est utilisé pour créer une mise en page multi-pages.
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.pagelayout import PageLayout
class SimpleApp(App):
def build(self):
layout = PageLayout()
layout.add_widget(Button(text='hello',background_color=(1,0,0,1)))
layout.add_widget(Button(text='world',background_color=(0,1,0,1)))
layout.add_widget(Button(text='welcome to',background_color=(1,1,1,1)))
layout.add_widget(Button(text='edureka',background_color=(0,1,1,1)))
return layout
if __name__ == "__main__":
SimpleApp().run()
Disposition relative
Il vous permet de définir des coordonnées relatives pour les widgets enfants.
from kivy.app import App
from kivy.uix.relativelayout import RelativeLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.lang import Builder
res = Builder.load_string('''BoxLayout:
Label:
text: 'Left'
Button:
text: 'Middle'
on_touch_down: print('Middle: {}'.format(args[1].pos))
RelativeLayout:
on_touch_down: print('Relative: {}'.format(args[1].pos))
Button:
text: 'Right'
on_touch_down: print('Right: {}'.format(args[1].pos))''')
class SimpleApp(App):
def build(self):
return res
if __name__ == "__main__":
SimpleApp().run()
Production:
Disposition de dispersion
Il est implémenté comme une disposition flottante à l'intérieur d'un scatter. Vous pouvez repositionner les widgets à l'aide de la mise en page scatter.
from kivy.app import App
from kivy.uix.scatterlayout import ScatterLayout
from kivy.uix.label import Label
class SimpleApp(App):
def build(self):
s = ScatterLayout()
l = Label(text='edureka')
s.add_widget(l)
return s
if __name__ == "__main__":
SimpleApp().run()
Disposition de la pile
Il organise les widgets horizontalement ou verticalement et autant qu'il peut en contenir.
from kivy.app import App
from kivy.uix.stacklayout import StackLayout
from kivy.uix.button import Button
class SimpleApp(App):
def build(self):
root = StackLayout()
for i in range(25):
btn = Button(text=str(i), width=100 + i * 5, size_hint=(None, 0.15))
root.add_widget(btn)
return root
if __name__ == "__main__":
SimpleApp().run()
Maintenant que nous en avons terminé avec les mises en page, jetons un coup d'œil aux widgets Behavior dans Kivy.
Widgets de comportement
Ces widgets ne font aucun rendu mais agissent sur les instructions graphiques ou le comportement d'interaction (tactile) de leurs enfants.
- Dispersion
- Vue du pochoir
Scatter est utilisé pour créer des widgets interactifs qui peuvent être tournés, mis à l'échelle avec deux doigts ou plus sur un système multitouch.
from kivy.app import App
from kivy.uix.scatter import Scatter
from kivy.uix.image import Image
class SimpleApp(App):
def build(self):
s = Scatter()
s.add_widget(Image(source="logo.png"))
return s
if __name__ == "__main__":
SimpleApp().run()
Vue du pochoir
La vue Stencil limite le dessin des widgets enfants au cadre de délimitation d'une vue Stencil. Dans l'exemple, nous utilisons un simple widget d'étiquette. La vue stencil est mieux utilisée lorsque nous dessinons dans un canevas et limite les activités à une zone limitée de l'application plutôt qu'à la fenêtre entière.
from kivy.app import App
from kivy.uix.stencilview import StencilView
from kivy.uix.label import Label
from kivy.uix.scatter import Scatter
class SimpleApp(App):
def build(self):
s = StencilView()
sc = Scatter()
s.add_widget(sc)
sc.add_widget(Label(text='edureka'))
return s
if __name__ == "__main__":
SimpleApp().run()
Gestionnaire d'écran
C'est un widget qui permet de gérer plusieurs écrans pour votre application. Il utilise une base de transition pour passer d'un écran à l'autre.
from kivy.app import App from kivy.base import runTouchApp from kivy.lang import Builder from kivy.properties import ListProperty from kivy.uix.boxlayout import BoxLayout from