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
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()
|