Des boutons

Le retour du chat !

chat.py

Voici une application qui vous rappellera des souvenirs.

  • Vous devez d'abord télécharger l'image et le son sur votre ordinateur.

  • Copiez le code suivant et enregistrez-le dans un fichier (par exemple chat.py).

  • Déplacez l'image et le son dans le même dossier que votre programme (c'est plus simple ainsi).

  • Les chemins vers l'image et le son sont à modifier en fonction du support.

  • Lors du premier lancement du programme avec Kivy, un temps sera nécessaire aux chargements du son et de l'image.

In [ ]:
from kivy.app import App
from kivy.core.audio import SoundLoader
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.label import Label


class ChatApp(App):

    def build(self):
        #On charge un son pour le chat:
        #Exemple de chemin Windows : "D:/Kivy/chat/meow.mp3"
        self.sound = SoundLoader.load('meow.mp3')
        #On cree une disposition pour l'affichage:
        Layout=BoxLayout(orientation='vertical',spacing=20,padding=(200,20))
        #On cree un bouton:
        self.BoutonChat=Button(text='Clique moi!',background_normal="kitty.png")
        self.BoutonChat.bind(on_press=self.miaule)
        #On ajoute le bouton dans l'affichage:
        Layout.add_widget(self.BoutonChat)
        
        #On cree un label:
        self.LabelChat=Label(text='Appuie sur le chat', font_size=20)
        Layout.add_widget(self.LabelChat)
        
        #On renvoie l'affichage:
        return Layout

    def miaule(self,instance):
        if self.sound:
            self.sound.play()

if __name__ == '__main__':
    ChatApp().run()
  • Essayez de modifier le texte du Label lorsque l'utilisateur clique sur le chat.

  • Ajoutez d'autres boutons et d'autres labels pour observer la disposition de l'affichage : BoxLayout

Calcul mental

Voici une application de calcul mental à compléter :

calcul.py

In [ ]:
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.popup import Popup
import random


class Ecran_du_Jeu(BoxLayout):
    def build(self):
        self.orientation='vertical'
        self.spacing=20
        self.haut()
        self.chiffres()
        self.BoutonValider=Button(text='Valider',size_hint=(0.5,0.15),pos_hint={'right': 0.75},background_color=[0,1,0,1])
        self.BoutonValider.bind(on_press=self.valider)
        self.add_widget(self.BoutonValider)

    def haut(self):
        Layout1=GridLayout(cols=2,size_hint_y=0.2,padding=20)
        calcul='9*5=?'
        self.calcul=Label(text=calcul,font_size=30, color=[1,0,0,1])
        Layout1.add_widget(self.calcul)
        self.reponse=''
        self.champreponse = TextInput(text=self.reponse,font_size=30)
        Layout1.add_widget(self.champreponse)
        self.add_widget(Layout1)

    def chiffres(self):
        Layout2=GridLayout(cols=2,size_hint_y=0.5,spacing=10)
        self.Bouton4=Button(text='4')
        self.Bouton4.bind(on_press=self.nombre)
        Layout2.add_widget(self.Bouton4)
        self.Bouton5=Button(text='5')
        self.Bouton5.bind(on_press=self.nombre)
        Layout2.add_widget(self.Bouton5)
        self.add_widget(Layout2)

    def nombre(self,instance):
        self.reponse+=instance.text
        self.champreponse.text=self.reponse
        
    def valider(self,instance):
        reponse=self.champreponse.text
        if reponse=='45':
            content = Button(text='Gagne!', font_size=50)
            popup = Popup(title='Super!',content=content, size_hint=(0.5,0.5))
            content.bind(on_press=popup.dismiss)
            popup.open()

class CalculApp(App):

    def build(self):
        Jeu1=Ecran_du_Jeu()
        Jeu1.build()
        return Jeu1
if __name__ == '__main__':
    CalculApp().run()
  • Etudiez ce code et ajoutez des commentaires.

  • Ajoutez les autres boutons pour les chiffres.

  • Ajoutez un popup en cas d'échec. (On pourra montrer la bonne réponse.)

  • Effacez le texte de champreponse après une tentative.

  • Utilisez les nombres aléatoires pour le calcul et modifier le test de la réponse en fonction.

  • Créez une variable score et ajoutez un label pour l'afficher.

  • Changez le calcul après chaque tentative.