|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
GALVANOMÈTRE
Information sur la source
Description
Widget Tkinter qui génère un galvanomètre dont la valeur affichée est modifiable par la commande SetValue()
Source
- # -*- coding: cp1252 -*-
- # Galvanomètre développé pour la librairie Tkinter
- # Ecrit et immaginé par Amaury
- # Yvan : ajouté la version non linéaire
-
-
- from Tkinter import *
- from math import *
- import time
- import random
- 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)
-
- def SetMinValue(self,valeur):
- global valmin
- try:
- self.delete(valmin)
- except:
- pass
- valmin=self.create_text(30,30,text=str(valeur))
-
- def SetMaxValue(self,valeur):
- global valmax
- try:
- self.delete(valmax)
- except:
- pass
- valmax=self.create_text(170,30,text=str(valeur))
-
- def SetUnit(self,unite):
- global unit
- try:
- self.delete(unit)
- except:
- pass
- unit=self.create_text(100,50,text=str(unite))
-
- def AddScale(self,nombre):
- b=0
- self.delete(ALL)
- 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")
- while (b<=100):
- a=(3-(b/50.))*(pi/4)
- x1=100+90*cos(a)
- y1=105-90*sin(a)
- x2=100+85*cos(a)
- y2=105-85*sin(a)
- self.create_line(x1,y1,x2,y2)
- b=b+(100/(nombre-1))
-
- def RemScale(self):
- self.delete(ALL)
- 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")
# -*- coding: cp1252 -*-
# Galvanomètre développé pour la librairie Tkinter
# Ecrit et immaginé par Amaury
# Yvan : ajouté la version non linéaire
from Tkinter import *
from math import *
import time
import random
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)
def SetMinValue(self,valeur):
global valmin
try:
self.delete(valmin)
except:
pass
valmin=self.create_text(30,30,text=str(valeur))
def SetMaxValue(self,valeur):
global valmax
try:
self.delete(valmax)
except:
pass
valmax=self.create_text(170,30,text=str(valeur))
def SetUnit(self,unite):
global unit
try:
self.delete(unit)
except:
pass
unit=self.create_text(100,50,text=str(unite))
def AddScale(self,nombre):
b=0
self.delete(ALL)
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")
while (b<=100):
a=(3-(b/50.))*(pi/4)
x1=100+90*cos(a)
y1=105-90*sin(a)
x2=100+85*cos(a)
y2=105-85*sin(a)
self.create_line(x1,y1,x2,y2)
b=b+(100/(nombre-1))
def RemScale(self):
self.delete(ALL)
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")
Conclusion
Ce programme peut être utilisé à l'intérieur d'une autre application graphique.
Fichier Zip
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
Télécharger le zip
Historique
- 08 juin 2008 09:54:05 :
- L'aiguille adopte désormais un comportement plus réaliste, en ne "sautant" plus d'une valeur à l'autre mais en simulant réellement un galvanomètre.
- 08 juin 2008 09:55:37 :
- edit
- 08 juin 2008 13:37:17 :
- Correction période de rafraichissement
- 10 juin 2008 20:34:28 :
- Comportement plus réaliste
- 27 novembre 2008 20:33:02 :
- Mise en forme avec une classe
- 04 février 2009 17:34:20 :
- Ajout de graduations et affichage des valeurs limites
Sources du même auteur
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
scrollbar dans scrollbox avec TKinter [ par MHI ]
Est-ce que quelqu'un sait comment ajouter les scrollbar à une scrollbox :J'ai essayé ceci :lstFile = Tkinter.Listbox(frmMain)lstFile.place(x = 20, y =
checkButton avec TKinter [ par MHI ]
comment faire pour tester si un checkButton est coché ?
Probleme avec TKinter [ par titasse ]
Bonjour, je debute en python. J'ai un probleme lorsque je veux importer TKinter avec la commande from TKinter import * j'ai le message suivant : Imp
au sujet de Tkinter et le module turtle [ par nico1900 ]
from turtle import *forward(120)left(90) color('red') forward(80)bon en fait je voulais tester le module turtle avec l e code ci-d
Un Canvas comme dans Tkinter, mais pour wxPython [ par samurize ]
Slt tout le monde. Voila tout est dans le titre (ou a peu pres ) : Je suis à la recherche d'un module pouvant s'integrer da
Taille de widgets sous Tkinter [ par Uims ]
Bonjour, Quelqu"un saurait comment definir la taille d'un widgets sous tkinter??? Exemple: fen 1 = Tk(taille=600) J'espere que je me fait comprend
Ouverture d'un fichier windows (avec Tkinter) [ par Uims ]
Bonjour, Je travaille sous python et Tkinter et j'aurai voulu savoir comment dire a python de demarrer (comme on clique sur un fichier) une applicati
Tkinter et Python [ par Telimektar1er ]
Voila j'ai commencé e python il y a une semaine et jusqu à aujourd'hui aucun problème. Mais voilà, je viens de commencer la cr
help, faire un mastermind en python et en tkinter avant le 24 !!! [ par Crick132 ]
je suis étudiante en 2ème année, je dois réaliser un mastermind en python avec 8 couleurs et 5 combinaisons possibles.si quelqu'un
Importer une image dans Tkinter... [ par skools ]
Bonjour à tous, Et pardon à ceux à qui j'ai envoyé des messages perso, je n'arrivais pas à poster un suget dans le forum... Voilà, après des heures d
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|