Sujet n6 du mini projet sur tkinter
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
3.1 KiB

"""
Évite de faire des += sur les listes: c'est peu efficace. Il vaut mieux
utiliser append.
La doc de separerListe n'est pas très claire : à quoi correspond son paramètre,
et que renvoie-t-elle ? Pourquoi renvoie-t-elle parfois trois choses et parfois 4???
De plus, si je comprends bien le dernier paramètre, ça devrait être un booléen
plutôt qu'un entier.
Le message d'erreur sur l'entry n'est pas super lisible.
Bonne idée d'ajouter des couleurs (=> bonus)
Note finale : 10/10
"""
# https://82.96.134.49/[...]
import tkinter as tk
def graduations(plusGrand):
"""crée des graduations sur le coté du caneva"""
graduations = [0,plusGrand*0.25,plusGrand*0.5,plusGrand*0.75,plusGrand]
caneva.create_text(5,7,text=graduations[4])
caneva.create_text(155,7,text='AA')
def separerListe(nombres):
"""Fonction permettant de séparer une chaine de caractere et de convertir ses elements en
nombres entiers et utilise la fonction plusGrand pour trouver le plus grand nombre
et renvoie 1 si la liste fait plus de 10 nombres."""
lstSepare = nombres.split(" ")
lstInt = []
for i in range(len(lstSepare)):
nombreTempo = lstSepare[i]
lstInt += [int(nombreTempo)]
if i+1>10:
return lstInt , plusGrand(lstInt) , 10 , 1
return lstInt , len(lstInt) , 0
def validerNombres():
"""Fonction permettant de créer les rectangles proportionnels aux nombres
donnés par l'utilisateur."""
caneva.delete("all")
erreur.configure(text="")
nombres_separe, longueurListe, plusDe10= separerListe(nombres.get())
maxNombres = max(nombres_separe)
if plusDe10==1:
erreur.configure(text="Vous avez inséré plus que 10 nombres,"\
" seul 10 sont affichés")
for i in range(longueurListe):
if 0<=int(nombres_separe[i])/maxNombres<0.25:
couleur = '#7ef968'
elif 0.25<=int(nombres_separe[i])/maxNombres<0.5:
couleur = '#e6f968'
elif 0.5<=int(nombres_separe[i])/maxNombres<0.75:
couleur = '#fc9d3f'
else:
couleur = '#fc5555'
caneva.create_rectangle(40*i+30,300-300*int(nombres_separe[i])/maxNombres
,40*i+50,300,fill=couleur)
graduations(maxNombres)
fenetre = tk.Tk()
fenetre.geometry('500x440')
fenetre['bg'] = "#fffcfc"
fenetre.title('Graphique proportionnel de 10 nombes - Sujet n°6')
caneva = tk.Canvas(fenetre,height = 300,width=440,bg="#fffcfc")
caneva.grid(column = 1, columnspan = 4,padx=30,pady=10,row = 0,rowspan = 4)
label = tk.Label(fenetre, text = 'Entrez au maximum 10 nombres entiers strictement '\
'positifs' ,bg = "#fffcfc",font='Noto 10')
label.grid(column = 1, columnspan = 4)
nombres = tk.StringVar()
entree = tk.Entry(fenetre, textvariable= nombres , width =50)
entree.grid(column = 1, columnspan =4)
boutonValider =tk.Button(fenetre,text='Valider les nombres',
command=validerNombres,bg="#fffcfc",font='Noto 10')
boutonValider.grid(column = 2, columnspan = 2)
messerreur = tk.StringVar()
erreur = tk.Label(fenetre,fg='red',bg="#fffcfc",font='Noto 7 bold')
erreur.grid(column=1,columnspan=4,row=5)
fenetre.mainloop()