Correction exercices widget tkinter en python
Sommaire
- 1- Objectifs
- 2- Exercice 01
- 2.1- Énoncé
- 2.2- Correction
- 3- Exercice 02
- 3.1- Énoncé
- 3.2- Solution
- 4- Exercice 03
- 4.1- Énoncé
- 4.2- Solution
- 5- Exercice 04
- 5.1- Énoncé
- 5.2- Solution
- 6- Exercice 05
- 6.1- Énoncé
- 6.2- Solution
- 7- Exercice 06
- 7.1- Énoncé
- 7.2- Solution
- 8- Exercice 07
- 8.1- Énoncé
- 8.2- Solution
- 8.2.1- Sommaire du cours Python
Correction exercices widget tkinter en python
-
Objectifs
- Comprendre et savoir utiliser les widgets tkinter de Python.
-
Exercice 01
-
Énoncé
- Vous pouvez visualiser l’énoncé de l’exercice
-
Correction
-
Exercice 02
-
Énoncé
- Vous pouvez visualiser l’énoncé de l’exercice
-
Solution
-
Exercice 03
-
Énoncé
- Vous pouvez visualiser l’énoncé de l’exercice
-
Solution
- Première version:
- Deuxième version:
-
Exercice 04
-
Énoncé
- Vous pouvez visualiser l’énoncé de l’exercice
-
Solution
# -*- coding: utf-8 -*-
# script bonjour.py
from tkinter import *
# Création de la fenêtre principale (main window)
Mafenetre = Tk()
Mafenetre.geometry('400x80')
Mafenetre.title("Application01")
Mafenetre.configure(background='ivory')
# Création d'un widget Label (texte 'Bonjour tout le monde !')
Label1 = Label(Mafenetre, text = 'Bonjour tout le monde !',
fg = 'red',bg="ivory")
Label1.config(font=("Courier", 20))
# Positionnement du widget avec la méthode pack()
Label1.pack()
# Création d'un widget Button (bouton Quitter)
Bouton1 = Button(Mafenetre, text = 'Quitter',bg="sky blue",
width=15, command = Mafenetre.destroy)
Bouton1.pack()
# Lancement du gestionnaire d'événements
Mafenetre.mainloop()
# ref. Swinnen, Apprendre à programmer avec Python, page 97
# Introduction to TKinter, page 84 ...
#
# le layer grid ; le widget Entry
#
from tkinter import *
fen = Tk () # la fenêtre de l'application
fen.title('titre')
# les labels
labelUn = Label (fen, text="votre prénom :")
labelUn.grid (row = 1,column = 1, sticky = "E", padx = 10)
labelDeux = Label (fen, text="votre nom :")
labelDeux.grid (row = 2, column = 1, sticky = "E", padx = 10)
labelTrois = Label (fen, text="votre ville :")
labelTrois.grid (row = 3, column = 1, sticky = "E", padx = 10)
labelValider = Label (fen, text="") # label de la chaîne de validation
labelValider.grid (row = 4, column = 1, columnspan = 2,\
sticky ="W",padx = 10)
# les entrées
entreeUn = Entry (fen)
entreeUn.grid (row = 1, column = 2)
entreeUn.focus_set()
entreeDeux = Entry (fen)
entreeDeux.grid (row = 2, column = 2)
entreeTrois = Entry (fen)
entreeTrois.grid (row = 3, column = 2)
# le cannevas et son image (232x245)
cannevasImg = Canvas (fen, width =120, height = 120, bg = "ivory")
logo = PhotoImage (file="logo.png")
image = cannevasImg.create_image(64, 60, image = logo)
cannevasImg.grid(row = 1, column = 3, rowspan = 3, padx = 10, pady = 10)
# les boutons et leur gestion
def valider () :
chn = entreeUn.get()+" // "+ entreeDeux.get()+ " // "+ \
entreeTrois.get()
labelValider.config(text = chn)
def initialiser ():
labelValider.config(text = "")
entreeTrois.delete (0, END)
entreeDeux.delete (0, END)
entreeUn.delete (0, END)
entreeUn.focus_set()
boutonQuitter = Button (fen, text=' Quitter ',command=fen.quit)
boutonQuitter.grid (row = 5, column = 3, pady = 10)
boutonValider = Button (fen, text=' Valider ',command=valider)
boutonValider.grid (row = 5, column = 1, pady = 10)
boutonInitialiser = Button (fen, text=' Réinitialiser ',\
command=initialiser)
boutonInitialiser.grid (row = 5, column = 2, pady = 10)
fen.mainloop() # boucle de capture des événements
fen.destroy() # fin de l'application
##----- Importation des Modules -----##
from tkinter import *
##----- Variables globales -----##
c = 42 # Longueur d'un côté d'une case
n = 8 # Nombre de cases par ligne et par colonne
cases = [] # Liste contenant les objets cases
##----- Création de la fenêtre -----##
fen = Tk()
fen.title('Damier')
##----- Création des boutons -----##
bouton_quitter = Button(fen, text='Quitter', command=fen.destroy)
bouton_quitter.grid(row = 1, column = 1, sticky=W+E, padx=3, pady=3)
##----- Création des canevas -----##
dessin = Canvas(fen, width = n*c+2, height = n*c+2, bg = 'ivory',
highlightthickness=6, highlightbackground="sky blue")# Bordure du cases
dessin.grid(row = 0, column = 0, columnspan=2, padx=3, pady=3)
##----- Création des figures -----##
for ligne in range(n): # Les cases de chaque ligne seront stockées dans "stockLignes"
stockLignes=[]
for colonne in range(n): # Conception des cases d'une ligne
stockLignes.append(dessin.create_rectangle(colonne*c+2, ligne*c+2,
(colonne+1)*c+2, (ligne+1)*c+2))
cases.append(stockLignes) # Ajout de la ligne à la liste principale
##----- Modification des figures créées -----##
for ligne in range(n):
for colonne in range(n):
if (ligne+colonne)%2 == 0: # Parité
dessin.itemconfigure(cases[ligne][colonne], outline='black', fill='black')
else:
dessin.itemconfigure(cases[ligne][colonne], outline='white')
##----- Programme principal -----##
fen.mainloop() # Boucle d'attente des événements
# Dessin d'un damier avec des carrés
from tkinter import *
def ligne_de_carres(x, y, c, n):
# dessiner une ligne de n carrés
i = 0
while i < n:
can.create_rectangle(x, y, x+c, y+c, fill='navy')
i += 1
x += c*2 # espacer les carrés
def damier(c, nl, nc):
# dessiner nl lignes de nc carrés de taille c avec décalage alterné
y = 0
while y < nl:
if y % 2 == 0: # une ligne sur deux, on
x = 0 # commencera la ligne de
else: # carrés avec un décalage
x = 1 # de la taille d'un carré
ligne_de_carres(x*c, y*c, c, nc)
y += 1
c = 40 # côté d'un carré
nl = 8 # nombre de lignes du damier
nc = 10 # nombre de colonnes
fen = Tk()
can = Canvas(fen, width=c*nc-3, height=c*nl-3, bg='ivory')
can.pack(side=TOP)
damier(c, nl, nc)
fen.mainloop()
##-----Importation des Modules-----##
from tkinter import *
##----- Définition des Variables globales -----##
##----- Définition des Fonctions -----##
##-----Création de la fenêtre-----##
fen = Tk()
fen.title('Morpion')
##-----Création des zones de texte-----##
message=Label(fen, text='Ici du texte.')
message.grid(row = 0, column = 0, columnspan=2, padx=3, pady=3, sticky = W+E)
##-----Création des boutons-----##
bouton_quitter = Button(fen, text='Quitter', command=fen.destroy)
bouton_quitter.grid(row = 2, column = 1, padx=3, pady=3, sticky = S+W+E)
bouton_reload = Button(fen, text='Recommencer')
bouton_reload.grid(row = 2, column = 0, padx=3, pady=3, sticky = S+W+E)
##-----Création du canevas-----##
dessin=Canvas(fen, bg="ivory", width=301, height=301)
dessin.grid(row = 1, column = 0, columnspan = 2, padx=5, pady=5)
##-----La grille-----##
lignes = []
for i in range(4):
lignes.append(dessin.create_line(0, 100*i+2, 303, 100*i+2, width=3, fill='green'))
lignes.append(dessin.create_line(100*i+2, 0, 100*i+2, 303, width=3, fill='green'))
##-----Programme principal-----##
fen.mainloop()# Boucle d'attente des événements