====== 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]]