Regroupe les trois premières sources que j'ai développée avec une modification:
Tous les widgets sont dans des classes qu'il suffit d'importer dans votre programme et d'utiliser comme n'importes quels widgets Tkinter.
Source / Exemple :
# -*- coding: cp1252 -*-
# Enssemble de 3 types d'afficheurs :
# Baregraph, Galvanomètre et Afficheur 7 Segments.
#la consigne est une valeurncomprise entre 0 et 100.
from Tkinter import*
class segs(Canvas):
def __init__(self,parent):
global root,d,u,chiffre,coded,codeu
root=parent
chiffre={0:[1,2,3,4,5,6], 1:[2,3], 2:[1,2,7,5,4], 3:[1,2,3,4,7], 4:[6,7,2,3], 5:[1,6,7,3,4], 6:[1,6,5,4,3,7], 7:[1,2,3], 8:[1,2,3,4,5,6,7], 9:[1,2,3,4,6,7]}
coded={1:[30,50,80,50],7:[30,100,80,100],4:[30,150,80,150],6:[25,55,25,95],2:[85,55,85,95],3:[85,105,85,145],5:[25,105,25,145]}
codeu={1:[120,50,170,50],7:[120,100,170,100],4:[120,150,170,150],6:[115,55,115,95],2:[175,55,175,95],3:[175,105,175,145],5:[115,105,115,145]}
d=0
u=0
Canvas.__init__(self)
self.create_rectangle(0,0,200,200,fill="white",outline="white")
self.create_rectangle(10,30,190,170,width=2,fill="grey")
self.create_line(100,30,100,170,width=2)
self.create_line(30,50,80,50,width=5,fill="pink")
self.create_line(30,100,80,100,width=5,fill="pink")
self.create_line(30,150,80,150,width=5,fill="pink")
self.create_line(120,50,170,50,width=5,fill="pink")
self.create_line(120,100,170,100,width=5,fill="pink")
self.create_line(120,150,170,150,width=5,fill="pink")
self.create_line(25,55,25,95,width=5,fill="pink")
self.create_line(115,55,115,95,width=5,fill="pink")
self.create_line(85,55,85,95,width=5,fill="pink")
self.create_line(175,55,175,95,width=5,fill="pink")
self.create_line(25,105,25,145,width=5,fill="pink")
self.create_line(115,105,115,145,width=5,fill="pink")
self.create_line(85,105,85,145,width=5,fill="pink")
self.create_line(175,105,175,145,width=5,fill="pink")
def SetValue(self,consigne):
global root,d,u
self.create_line(30,50,80,50,width=5,fill="pink")
self.create_line(30,100,80,100,width=5,fill="pink")
self.create_line(30,150,80,150,width=5,fill="pink")
self.create_line(120,50,170,50,width=5,fill="pink")
self.create_line(120,100,170,100,width=5,fill="pink")
self.create_line(120,150,170,150,width=5,fill="pink")
self.create_line(25,55,25,95,width=5,fill="pink")
self.create_line(115,55,115,95,width=5,fill="pink")
self.create_line(85,55,85,95,width=5,fill="pink")
self.create_line(175,55,175,95,width=5,fill="pink")
self.create_line(25,105,25,145,width=5,fill="pink")
self.create_line(115,105,115,145,width=5,fill="pink")
self.create_line(85,105,85,145,width=5,fill="pink")
self.create_line(175,105,175,145,width=5,fill="pink")
root.update()
#Décomposition de la valeur à afficher en unités et dixaines
while(consigne>=10):
consigne=consigne-10
d=d+1
u=consigne
segu=list(chiffre [u])
segd=list(chiffre [d])
# Digits allumés
for i in segu:
self.create_line(codeu[i],width=5,fill="red")
for j in segd:
self.create_line(coded[j],width=5,fill="red")
root.update()
class Galva(Canvas):
def __init__(self,parent):
global valeur,root,aiguille,txt
root=parent
valeur=0.
b=0
a=0
Canvas.__init__(self)
#Dessin du Galva
self.create_rectangle(0,0,200,200,fill="white",outline="white")
self.create_rectangle(10,10,190,150,width=2,fill="white")
self.create_rectangle(10,120,190,150,width=2,fill="grey")
self.create_oval(25,25,175,175,width=2)
self.create_rectangle(12,60,188,118,fill="white",outline="white")
self.create_rectangle(12,121,188,148,fill="grey",outline="grey")
self.create_rectangle(10,151,190,200,fill="white",outline="white")
self.create_oval(90,125,110,145, width=2,fill="white")
self.create_line(108,127,92,143,width=5)
self.create_oval(95,100,105,110,fill="red",outline="red")
a=(3-(0/50.))*(pi/4)
x=100+90*cos(a)
y=105-90*sin(a)
aiguille=self.create_line(100,105,x,y,width=1,fill="red")
txt=self.create_text(12,160, text="0")
parent.update()
def SetValue(self,consigne):
global valeur,root,aiguille,txt
parent=root
while (int(valeur*100+.5)!=int(consigne*100+.5)):
if (valeur<consigne):
valeur=valeur+(float(consigne-valeur)/50)
float (valeur)
a=(3-(valeur/50.))*(pi/4)
x=100+90*cos(a)
y=105-90*sin(a)
self.delete(aiguille)
self.delete(txt)
aiguille=self.create_line(100,105,x,y,width=1,fill="red")
txt=self.create_text(12,160, text=int(valeur) )
parent.update()
time.sleep(0.002) #Définie l'inertie de l'aiguille (Timer)
elif(valeur>consigne):
valeur=valeur+(float(consigne-valeur)/50)
float (valeur)
a=(3-(valeur/50.))*(pi/4)
x=100+90*cos(a)
y=105-90*sin(a)
self.delete(aiguille)
self.delete(txt)
aiguille=self.create_line(100,105,x,y,width=1,fill="red")
txt=self.create_text(12,160, text=int(valeur) )
parent.update()
time.sleep(0.002) #Définie l'inertie de l'aiguille (Timer)
else:
float (valeur)
a=(3-(valeur/50.))*(pi/4)
x=100+90*cos(a)
y=105-90*sin(a)
self.delete(aiguille)
self.delete(txt)
aiguille=self.create_line(100,105,x,y,width=1,fill="red")
txt=can.create_text(12,160, text=int(valeur) )
parent.update()
time.sleep(0.002) #Définie l'inertie de l'aiguille (Timer)
class Bar(Canvas):
def __init__(self,parent):
global i,j,txt
i,j=25,170
Canvas.__init__(self)
#Dessin du Galva
self.create_rectangle(0,0,200,200,fill="white",outline="white")
self.create_rectangle(60,10,140,190,fill="grey")
m,j,k,l=25,65,125,175
consigne=random.randint(0,100)
txt=self.create_text(10,10,text="0")
while m<70:
self.create_line(70,m,130,m,width=5,fill="pink")
m=m+10
while m<120:
self.create_line(70,m,130,m,width=5,fill="yellow")
m=m+10
while m<180:
self.create_line(70,m,130,m,width=5,fill="aquamarine")
m=m+10
parent.update()
def SetValue(self,consigne):
global txt
parent=root
m,j,k,l=25,65,125,175
self.delete(txt)
while m<70:
self.create_line(70,m,130,m,width=5,fill="pink")
m=m+10
while m<120:
self.create_line(70,m,130,m,width=5,fill="yellow")
m=m+10
while m<180:
self.create_line(70,m,130,m,width=5,fill="aquamarine")
m=m+10
valeur=int(consigne*0.16)
txt=self.create_text(10,10,text=consigne)
while valeur>=12:
self.create_line(70,j,130,j,width=5,fill="red")
valeur=valeur-1
j=j-10
while valeur>=6:
self.create_line(70,k,130,k,width=5,fill="orange")
valeur=valeur-1
k=k-10
while valeur>=0:
self.create_line(70,l,130,l,width=5,fill="green")
valeur=valeur-1
l=l-10
parent.update()
Conclusion :
En espérant qu'ils puissent servir à quelqu'un...
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.