Nous allons maintenant "peupler" la fenêtre principale Tkinter avec des widgets.

À faire vous-même 2.1

Saisissez, analysez et testez ce programme


#!/usr/bin/env python
# -*- coding: utf-8 -*-
from tkinter import *
fen=Tk()
texteLabel = Label(fen, text = "Hello Tkinter !")
texteLabel.pack()
fen.mainloop()
			

Vous pouvez constater que la fenêtre est relativement petite. En effet, par défaut, la taille de la fenêtre est adaptée à la taille des widgets (ici un "Label").

Vous avez sans doute remarqué que le redimensionnement de la fenêtre est possible (en utilisant la souris)


Analyse du programme du "À faire vous-même 2.1" :

Il est possible d'utiliser le paramètre "textvariable" à la place de "text" dans le constructeur "Label"

À faire vous-même 2.2

Saisissez, analysez et testez ce programme


#!/usr/bin/env python
# -*- coding: utf-8 -*-
from tkinter import *
fen=Tk()
monTexte=StringVar()
monTexte.set("Bonjour le monde")
texteLabel = Label(fen, textvariable = monTexte)
texteLabel.pack()
fen.mainloop()
			

Avec "monTexte=stringVar()" nous définissons une variable "monTexte" qui sera de type string (chaine de caractères).

"monTexte.set("Bonjour le monde")" la variable "monTexte" contient maintenant la chaine "Bonjour le monde"

Dans le constructeur "Label", text= "Hello Tkinter !" a été remplacé par textvariable = monTexte

Nous allons maintenant placer un second widget : un bouton.

À faire vous-même 2.3

Saisissez, analysez et testez ce programme


#!/usr/bin/env python
# -*- coding: utf-8 -*-
from tkinter import *
fen=Tk()
texteLabel = Label(fen, text = "Hello Tkinter !")
texteLabel.pack()
btn=Button(fen, text="Appuyez ici", command=fen.destroy)
btn.pack()
fen.mainloop()
			

Vous aurez sans doute compris que le paramètre "command" du constructeur "Button" correspond à l'action à entreprendre si l'utilisateur appuie sur le bouton (ici "fen.destroy" : quitter le programme)

Le paramètre "command" peut aussi être utilisé pour appeler des fonctions que vous aurez vous-même créée

À faire vous-même 2.4

Saisissez, analysez et testez ce programme


#!/usr/bin/env python
# -*- coding: utf-8 -*-
from tkinter import *
def affichage():
    monTexte.set("Bravo, vous avez réussi à cliquer !")
fen=Tk()
monTexte=StringVar()
monTexte.set("Bonjour le monde")
texteLabel = Label(fen, textvariable = monTexte)
texteLabel.pack()
btn=Button(fen, text="Appuyez ici", command=affichage)
btn.pack()
fen.mainloop()
			

À faire vous-même 2.5

Écrivez un programme qui permettra d'afficher une fenêtre contenant deux widgets : un bouton et un label. Le texte affiché sur le bouton sera "+1". Le Label devra afficher le nombre de clics déjà effectué (exemple : "Vous avez cliqué 5 fois sur le bouton").

Voici quelques notions qui vous seront utiles pour la réalisation de ce programme :

Analysez et testez ce programme


#!/usr/bin/env python
# -*- coding: utf-8 -*-
i=5
def f():
    i=6
f()
print("la valeur de i est : "+str(i))
			

Vu que la fonction f est appelée juste avant le print et que cette fonction attribut la valeur 6 à la variable i, on pourrait penser que le résultat du print sera : "la valeur de i est : 6"

Pourtant, nous avons "la valeur de i est : 5", comme si l'exécution de la fonction f n'avait eu aucun effet, pourquoi ?

i est une variable globale, elle a été définie en dehors de toute fonction. La fonction f peut "utiliser" la variable i, mais ne peut pas la modifier.

Pour pouvoir modifier la valeur de i dans la fonction f, il faudra définir i comme global dans la fonction :


#!/usr/bin/env python
# -*- coding: utf-8 -*-
i=5
def f():
    global i
    i=6
f()
print("la valeur de i est : "+str(i))
		

Cela fonctionne, il est maintenant possible de modifier la valeur de i dans la fonction f.

Tout ceci est en fait un peu plus complexe, mais cette activité n'étant pas un cours sur la portée des variables, nous n'irons pas plus loin sur ce sujet, si vous voulez en savoir plus, je vous conseille de lire ce cours