====== Python - Kivy : Utilisez les widget Boutons, Labels et TextInput ====== ===== Présentation ===== Voici une activité pour bien comprendre comment : * créer, positionner et utiliser des boutons, labels et inputs, * Gérer une liste de boutons * Comment insérer et utiliser un bouton, un label et un input. ==== Créer, positionner et utiliser des boutons, labels et inputs ==== * Crée un dossier **Menu** ; * Dans ce dossier crée un fichier **main.py** avec le contenu suivant : from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.uix.button import Button from kivy.uix.label import Label from kivy.uix.textinput import TextInput class Ecran(BoxLayout): def build(self): self.orientation='vertical' self.spacing=20 self.Un_Bouton() self.Un_Label() self.Un_Input() def Un_Bouton(self): #On cree un bouton: self.Bouton1=Button() #On lui donne des proprietes: #Un texte: self.Bouton1.text='Clique sur ce bouton pour changer le texte' #Une taille en pourcentages: self.Bouton1.size_hint=(0.5,0.15) #Une position: self.Bouton1.pos_hint={'right': 0.75} #Une couleur de fond: self.Bouton1.background_color=[0,1,0,1] #On l'associe a une fonction: self.Bouton1.bind(on_press=self.Une_Fonction_Bouton) #On l'ajoute au layout principal: self.add_widget(self.Bouton1) def Un_Label(self): #On cree un label avec toutes ses proprietes: self.Label1=Label(text="Texte du label",font_size=30, color=[1,0,0,1]) #On l'ajoute au layout principal: self.add_widget(self.Label1) def Un_Input(self): #On cree un Input avec des ses proprietes: self.Input1 = TextInput(text="Texte initial... à changer",font_size=30) #On ajoute des proprietes (une largeur de 50% et une hauteur de 20%) self.Input1.size_hint_x=0.5 self.Input1.size_hint_y=0.2 #On l'ajoute au layout principal: self.add_widget(self.Input1) def Une_Fonction_Bouton(self,instance): #On peut changer le texte du bouton: #la variable "instance" correspond au bouton qui a ete presse instance.text="Bravo ! Tu as cliqué sur moi" #On peut changer le texte du label: self.Label1.text=self.Input1.text # on reinitialiser le contenu du Input self.Input1.text="Texte initial... à changer" class Menu(App): def build(self): Layout=Ecran() Layout.build() return Layout if __name__ == '__main__': Menu().run() Modifie ce programme pour permettre d'afficher la composition d'un menu : * en saisissant un élément du menu * en rajoutant le nouvel élément quand on clique sur un bouton On ne doit pouvoir saisir qu'un maximum de 5 éléments : * afficher le nombre d'éléments saisis * afficher **C'est fini.** quand 5 éléments ont été saisi. ===== Bouton ===== * Crée un dossier **Boutons** ; * Dans ce dossier crée un fichier **main.py** avec le contenu suivant (Ce programme affiche une liste de boutons) : # -*- coding: utf-8 -*- from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.uix.button import Button class Ecran(BoxLayout): def build(self): self.orientation='vertical' self.spacing=20 self.Mes_Boutons() def Mes_Boutons(self): #On cree une liste pour les boutons: self.Liste_Boutons=[] #On fait tourner une boucle pour creer 10 boutons: for i in range(0,10): #On ajoute un bouton dans la liste: self.Liste_Boutons.append(Button()) #On lui donne un texte qui depend de i: self.Liste_Boutons[i].text="Bouton "+str(i) #On lui donne un identite "id" pour le retrouver hors de la liste: self.Liste_Boutons[i].id="B"+str(i) #On lui associe une fonction: self.Liste_Boutons[i].bind(on_press=self.Une_Fonction_Bouton) #On ajoute le bouton au layout principal: self.add_widget(self.Liste_Boutons[i]) #On ajoute une couleur de fond au dernier bouton: self.Liste_Boutons[9].background_color=[0,1,0,1] def Une_Fonction_Bouton(self,instance): #instance correspond au bouton qui vient d'etre active: #On change la couleur des neuf premiers boutons: for i in range(0,9): self.Liste_Boutons[i].background_color=[0.5,0.5,0.5,1] #En gris #On change la couleur du bouton active si ce n'est pas le dernier: if instance.id!="B9": instance.background_color=[1,0,0,1] #En rouge class BoutonsApp(App): def build(self): root=Ecran() root.build() return root if __name__ == '__main__': BoutonsApp().run() Modifie ce programme pour : * afficher les boutons comme ceux d'une calculatrice, * ajoute le bouton **+** permettant de faire une addition et d'afficher le résultat. ===== Retour au menu de ma première application ===== * [[dev:python:kivy:app1|Première application]]