====== Python - Kivy : Hello World et un peu plus ======
===== Le programme personne =====
* Crée un dossier **personne** ;
* Dans ce dossier crée un fichier **main.py** avec le contenu suivant :
# -*- coding: utf-8 -*-
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
class Saisie(GridLayout):
def __init__(self, **kwargs):
super(Saisie, self).__init__(**kwargs)
self.cols = 2
self.add_widget(Label(text='Nom'))
self.nom = TextInput(multiline=False)
self.add_widget(self.nom)
self.add_widget(Label(text='prénom'))
self.prenom = TextInput(multiline=False)
self.add_widget(self.prenom)
class Personne(App):
def build(self):
return Saisie()
if __name__ == '__main__':
Personne().run()
===== Exécution du programme =====
* Lance l'exécution du fichier **main.py** depuis Spyder ou en ligne de commande :
python main.py
* un fenêtre s'ouvre et contient un bouton cliquable sur lequel est inscrit **"Hello World !"** qui couvre toute la fenêtre
===== Explication =====
Ta fenêtre va contenir :
* 2 champs de saisie et deux labels pour indiquer ce qu'il faut saisir.
* une grille de 2 colonnes pour permettre de placer correctement les différents widgets
Quelques explications :
* **from kivy.uix.gridlayout import GridLayout**
* importation d'un Widget GridLayout qui sera la classe de base du widget principal Saisie :
* class Saisie(GridLayout):
* **super(Saisie, self).__init__(%%**%%kwargs) :**
* la fonction (méthode) spéciale __init__ permet de construire l'objet Saisie en modifiant (surchargeant) la classe de base GridLayout afin d'ajouter les widgets et leur définir leur comportement
def __init__(self, **kwargs):
super(Saisie, self).__init__(**kwargs)
Les liens Kivy pour connaître les propriétés de ces trois objets :
* [[http://kivy.org/docs/api-kivy.uix.button.html?highlight=buttons|Les boutons]]
* [[http://kivy.org/docs/api-kivy.uix.label.html?highlight=label|Les labels]]
* [[http://kivy.org/docs/api-kivy.uix.textinput.html?highlight=textinput|Les TextInput]]
===== Prendre en compte la saisie du prénom =====
* ajout d'un bouton
* ajout d'un label pour afficher le nom avec le prénom
# -*- coding: utf-8 -*-
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
class Saisie(GridLayout):
def __init__(self, **kwargs):
super(Saisie, self).__init__(**kwargs)
self.cols = 2
self.add_widget(Label(text='Nom'))
self.nom = TextInput(multiline=False)
self.add_widget(self.nom)
self.add_widget(Label(text='prénom'))
self.prenom = TextInput(multiline=False)
self.add_widget(self.prenom)
self.bouton = Button(text='Afficher')
self.add_widget(self.bouton)
self.bouton.bind(on_press=self.afficher)
self.nomprenom = Label()
self.add_widget(self.nomprenom)
def afficher(self,instance):
self.nomprenom.text = self.nom.text + " " + self.prenom.text
class Personne(App):
def build(self):
return Saisie()
if __name__ == '__main__':
Personne().run()
===== Retour au menu de ma première application =====
* [[dev:python:kivy:app1|Première application]]