Jul-06-2019, 12:29 PM
In the following code, I try with and without the "=None" on line 30 (def changeCouleurs(self,event=None):), but there's no difference. I would like to understand in which case you use event=None.
Thanks for any help
Thanks for any help
class Application(object):
def __init__ (self):
"""Construteur de la fenêtre principale"""
self.fen=Tk()
self.fen.title('Code des couleurs')
self.dessineResistance()
self.dessineBouton()
self.codeCouleur = ['black','brown','red','orange','yellow',\
'green','blue','purple','grey','white']
def dessineResistance(self):
self.can=Canvas(self.fen,bg='ivory',width =500,height=300)
self.can.grid(row = 1, column = 1, columnspan=3)
self.can.create_line(10,150,490,150,width = 4)
self.can.create_rectangle(100,100,400,200,fill='light grey')
self.ligne=[]
for i in range(3):
self.ligne.append(self.can.create_rectangle(130+i*35,\
100,145+i*35,200,fill='black'))
def dessineBouton(self):
Label(self.fen,text ='Entrez la valeur de la résitance, en ohms :').\
grid(row=2,column=1,columnspan=3)
#Button(self.fen,text='Montrer',command=self.changeCouleurs).grid(row=3,column=1)
self.entree=Entry(self.fen,width=14)
self.entree.grid(row=3,column=2)
self.entree.bind("<Return>",self.changeCouleurs)
Button(self.fen,text='Quitter',command=self.fen.quit).\
grid(row=3,column=3)
def changeCouleurs(self,event=None):
"""Mettre event dans la fonction si elle est appelée avec un bind"""
#test avec enent=None : marche pareil
self.valEntree=self.entree.get()
try:
val=float(self.valEntree)
except:
erreur = 1
else:
erreur = 0
if erreur == 1 or val >1e11 or val < 1:
self.signalErreur()
else :
li =[0]*3 # liste des 3 codes à afficher
if val >= 10:
logv = int(log10(val)) # partie entière du logarithme
ordgr = 10**logv # ordre de grandeur
v_temp = round(val/ordgr*10)
# extraction du premier chiffre significatif :
li[0] = int(v_temp/10) # partie entière
li[1] = v_temp- 10*li[0] # partie décimale
li[2] = logv -1
else:
v_temp=round(val,1)
li[0]=0
li[1]=int(v_temp)
li[2]=int(10*(v_temp-li[1]))
for i in range(3):
self.can.itemconfig(self.ligne[i],fill=self.codeCouleur[li[i]])
def signalErreur(self):
self.entree.config(bg='red')
self.entree.after(1000,self.videEntree)
def videEntree(self):
self.entree.config(bg='white')
self.entree.delete(0,len(self.valEntree))
for i in range(3):
self.can.itemconfig(self.ligne[i],fill='black')
from tkinter import *
from math import log10
appli = Application()
appli.fen.mainloop()
appli.fen.destroy()
