Skip to content
Snippets Groups Projects
Select Git revision
  • master default protected
  • vS5_2020-2021
2 results

seance4_4h.md

Blame
  • seance4_4h.md 10.36 KiB

    Sommaire

    BE #4 : Application de dessin vectoriel

    L'objectif de ce BE est d'apprendre à manipuler quelques composants du module Python Tkinter permettant de créer des interfaces graphiques. Vous allez créer une application simple de dessin vectoriel, qui permettra de tracer à la souris les formes définies dans le BE #2.


    Quelques éléments sur Tkinter (45 min.)

    Le module Tkinter ("Tk interface") permet de créer des interfaces graphiques. Il contient de nombreux composants graphiques (ou widgets), tels que les boutons (classe Button), les cases à cocher (classe CheckButton), les étiquettes (classe Label), les zones d'entrée de texte (classe Entry), les menus (classe Menu), ou les zones de dessin (classe Canvas).

    Durant ce BE, nous vous recommandons de conserver le lien vers une documentation sur Tkinter ouverte dans un onglet de votre navigateur. Elle contient des exemples de code qui vous seront utiles pour utiliser chacun des widgets.

    Voici un premier exemple de code Tkinter :

    from tkinter import *
    from random import randint
    
    class FenPrincipale(Tk):
        def __init__(self):
            Tk.__init__(self)
            
            # paramètres de la fenêtre
            self.title('Tirage aléatoire')
            self.geometry('300x100+400+400')
            
            # constitution de l'arbre de scène
            boutonLancer = Button(self, text='Tirage')
            boutonLancer.pack(side=LEFT, padx=5, pady=5)
            self.__texteResultat = StringVar()
            labelResultat = Label(self, textvariable=self.__texteResultat)
            labelResultat.pack(side=LEFT, padx=5, pady=5)
            boutonQuitter = Button(self, text='Quitter')
            boutonQuitter.pack(side=LEFT, padx=5, pady=5)
            
            # association des widgets aux fonctions
            boutonLancer.config(command=self.tirage) # appel "callback" (pas de parenthèses !)
            boutonQuitter.config(command=self.quit)  # idem
        
        # tire un entier au hasard et l'affiche dans self.__texteResultat
        def tirage(self):
            nb = randint(1, 100)
            self.__texteResultat.set('Nombre : ' + str(nb))
    
    
    if __name__ == '__main__':
        app = FenPrincipale()
        app.mainloop()