Nous efforçant d’apprendre au passage la manière correcte d’exprimer les choses, nous dirons que nous créons ici l’objet tex1 par de la classe Label(). Remarquons que nous faisons appel à une classe, de la même manière que nous faisons appel à une fonction : c’est-à-dire en fournissant un certain nombre d’arguments dans des parenthèses. Nous verrons plus loin qu’une classe est en fait une sorte de « conteneur » dans lequel sont regroupées des fonctions et des données. Quels arguments avons-nous donc fournis pour cette instanciation ?
- Le premier argument transmis (fen1), indique que le nouveau widget que nous sommes en train de créer sera contenu dans un autre widget préexistant, que nous désignons donc ici comme son « maître » : l’objet fen1 est le widget maître de l’objet tex1. On pourra dire aussi que l’objet tex1 est un widget esclave de l’objet fen1.
- Les deux arguments suivants servent à préciser la forme exacte que doit prendre notre widget. Ce sont en effet deux options de création, chacune fournie sous la forme d’une chaîne de caractères : d’abord le texte de l’étiquette, ensuite sa couleur d’avant-plan (ou foreground, en abrégé fg). Ainsi le texte que nous voulons afficher est bien défini, et il doit apparaître coloré en rouge.
Nous pourrions encore préciser bien d’autres caractéristiques : la police à utiliser, ou la couleur d’arrière-plan, par exemple. Toutes ces caractéristiques ont cependant une valeur par défaut dans les définitions internes de la classe Label(). Nous ne devons indiquer des options que pour les caractéristiques que nous souhaitons différentes du modèle standard.
4. À la quatrième ligne de notre exemple : tex1.pack(), nous activons une associée à l’objet tex1 : la méthode pack(). Nous avons déjà rencontré ce terme de méthode (à propos des listes, notamment). Une méthode est une fonction intégrée à un objet (on dira aussi qu’elle est dans l’objet). Nous apprendrons bientôt qu’un informatique est en fait un élément de programme contenant toujours :
- Un certain nombre de données (numériques ou autres), contenues dans des variables de types divers : on les appelle les attributs (ou les propriétés) de l’objet ;
- Un certain nombre de procédures ou de fonctions (qui sont donc des algorithmes) : on les appelle les méthodes de l’objet.
La méthode pack() fait partie d’un ensemble de méthodes qui sont applicables non seulement aux widgets de la classe Label(), mais aussi à la plupart des autres widgets tkinter, et qui agissent sur leur disposition géométrique dans la fenêtre. Comme vous pouvez le constater par vous-même si vous entrez les commandes de notre exemple une par une, la méthode pack() réduit automatiquement la taille de la fenêtre « maître » afin qu’elle soit juste assez grande pour contenir les widgets « esclaves » définis au préalable.
5. À la cinquième ligne :
bou1 = Button(fen1, text=’Quitter’, command = fen1.destroy), nous créons notre second widget « esclave » : un bouton.
Comme nous l’avons fait pour le widget précédent, nous appelons la classe Button() en