Pages : 1
#1 Le 29/05/2008, à 17:48
- figarojuju
chronometre en python
Bonjour,
j'aimerai faire un petit chrono en python et qu'il affiche en très gros le résultat. Voila ce que j'ai fait:
import time
montemps=time.time()
while(1):
y=time.time()-montemps
time.sleep(5)
print time.localtime(y)
C'est pas très joli...
Je ne connais pas bien les bibliothèques de python, auriez-vous une manière de faire en sorte que, au lieu d'avoir un 9-uplet, je n'ai que les minutes, secondes et affichées en très gros?
Merci et bonne soirée!
Ubuntu: Hardy Heron
Hors ligne
#2 Le 29/05/2008, à 19:40
- Clop'
Re : chronometre en python
Bonjour,
Je pense que tu cherches la fonction time.strftime().
A utiliser de la manière suivante ( doc : http://docs.python.org/lib/module-time.html):
import time
montemps=time.time()
while(True):
y=time.time()-montemps
#time.sleep(5)
print time.strftime('%M # %S ',time.localtime())
par contre pour le très gros.... aucune idée en console.. faudrait voir à faire une chtite boite de dialogue en Tkinter
EDIT :
J'ai jeté un oeil à Tkinter (dont je ne me rappellais pas grand chose... ). Tu pourrais avoir un truc comme ça :
import Tkinter
class Chrono(Tkinter.Label):
def __init__(self,root,startTime=70):
Tkinter.Label.__init__(self,root,text='Starting...')
self.value=startTime
self.font=('Helvetica', 36, 'normal')
self.__setitem__('font',self.font)
self.after(1000,self.count)
def formatTime(self):
return str(self.value/60)+': '+str(self.value%60)
def count(self):
self.value=self.value-1
self.__setitem__('text',self.formatTime())
self.after(1000,self.count)
if __name__=="__main__":
root = Tkinter.Tk()
root.title('Chtit Chrono')
label = Chrono(root,130)
label.pack()
root.mainloop()
C'est pas très joli, pas vraiment bien codé, mais ça a l'air de tourner
Il suffit de fournir le nombre de secondes à décompter vers la fin du fichier ( label = Chrono(root,130) ). Quant à la taille et à la police, tu peux modifier la ligne suivante :
self.font=('Helvetica', 36, 'normal')
Je ne sais pas vraiment quel nom de police sont dispo, c'est à googler et tester .
Voilà
Dernière modification par Clop' (Le 29/05/2008, à 20:18)
----------------------
Linux on the Root , un site qu'il fait bon feuilleter!
----------------------
PyQtRadio, un lecteur de webradio simple et léger! Installation multi-distrib'
Hors ligne
#3 Le 29/05/2008, à 20:58
- arnaud_d
Re : chronometre en python
Arf Clop' tu as été plus rapide.
Ce n'est pas bien grave je suis aussi débutant donc ça m'a bien entrainé, voilà ce que j'avais fait :
#!/usr/bin/python
# -*- coding: utf-8 -*-
import time
from Tkinter import *
def lancer_chrono():
global depart,flag
flag=1
depart = time.time()
top_horloge()
def stoper_chrono():
global flag
flag=0
def reset_chrono():
global depart
depart = time.time()
def top_horloge():
global depart,flag
y=time.time()-depart
minutes = time.localtime(y)[4]
secondes = time.localtime(y)[5]
if flag :
message.configure(text = "%i min %i sec " %(minutes,secondes))
fenetre.after(1000,top_horloge)
if __name__=="__main__":
flag=0
depart = 0
fenetre=Tk()
fenetre.title('Chronomètre')
message = Label(fenetre,font=('sans', 20, 'bold'),text="Chrono prêt")
message.grid(row=1)
Button(fenetre,text='GO !',command=lancer_chrono).grid(row=2)
Button(fenetre,text='STOP !',command=stoper_chrono).grid(row=3)
Button(fenetre,text='RESET',command=reset_chrono).grid(row=4)
fenetre.mainloop()
mon code est plus long que celui Clop', je vais regarder si je peux pas améliorer tout ça.
Voilà, merci pour l'exercice d'entrainement.
PS : si quelqu'un voit une grosse erreur, un truc à ne surtout par faire, je suis ouvert aux critiques
Arnaud
Edit : probleme dans mon code, le bouton STOP ne marchait pas !
Edit 2 : c'est bien de donner ses sources d'inspiration : http://www.daniweb.com/code/snippet552.html
PS : en parlant de Python, je fais un peu de pub pour mon topic parce que je suis toujours en galère : [Python] Déclencher évèvement sur modif d'un widget Entry
Dernière modification par arnaud_d (Le 29/05/2008, à 21:08)
Hors ligne
#4 Le 29/05/2008, à 21:41
- Clop'
Re : chronometre en python
Re-bonsoir!
Je viens, de voir, d'après l'exemple d'Arnaud , que je m'était planté! Je t'ai fait un compte à rebours
Le changement n'est pas énorme, il suffit de remplacer le '-'dans count() par un '+' soit :
import Tkinter
class Chrono(Tkinter.Label):
def __init__(self,root,startTime=0):
Tkinter.Label.__init__(self,root,text='Starting...')
self.value=startTime
self.font=('Helvetica', 36, 'normal')
self.__setitem__('font',self.font)
self.after(1000,self.count)
def formatTime(self):
return str(self.value/60)+': '+str(self.value%60)
def count(self):
self.value=self.value+1
self.__setitem__('text',self.formatTime())
self.after(1000,self.count)
if __name__=="__main__":
root = Tkinter.Tk()
root.title('Chtit Chrono')
label = Chrono(root)
( J'ai aussi changé la valeur par défaut qui devenait inutile )
Par rapport au code d'Arnaud, si je suis plus court, c'est que j'utilise un raccourci... Plutôt que de calculer le temps à afficher à partir du temps local et d'un temps compté au lancement, je lance une fonction toutes les secondes grâce à une fonction intégrée de Tkinter...
EDIT pour réponse au PS d'Arnaud : Va faire un tour sur ton post
Dernière modification par Clop' (Le 29/05/2008, à 21:42)
----------------------
Linux on the Root , un site qu'il fait bon feuilleter!
----------------------
PyQtRadio, un lecteur de webradio simple et léger! Installation multi-distrib'
Hors ligne
#5 Le 30/05/2008, à 10:50
- figarojuju
Re : chronometre en python
Tout d'abord merci à tous les deux, si vous étiez dans la région de Chambéry, je vous paierai volontiers un coup à boire, parce que là, vu la rapidité de votre intervention, Chapeau!!!
Merci beaucoup, j'étudie votre code et à bientôt!
Ubuntu: Hardy Heron
Hors ligne
#6 Le 30/05/2008, à 12:38
- arnaud_d
Re : chronometre en python
Arf, je suis un peu loin, mais ça aurait été avec plaisir... Cependant si tu montes au Danemark, passe boire une Carlsberg
Dernière modification par arnaud_d (Le 30/05/2008, à 12:39)
Hors ligne
#7 Le 15/05/2015, à 12:16
- effects33
Re : chronometre en python
Moi aussi j'ai pas réussi à faire un chronomètre mais j'ai réussi a faire un montre.
from turtle import *
from datetime import datetime
def jump(distanz, winkel=0):
penup()
right(winkel)
forward(distanz)
left(winkel)
pendown()
def hand(laenge, spitze):
fd(laenge*1.15)
rt(90)
fd(spitze/2.0)
lt(120)
fd(spitze)
lt(120)
fd(spitze)
lt(120)
fd(spitze/2.0)
def make_hand_shape(name, laenge, spitze):
reset()
jump(-laenge*0.15)
begin_poly()
hand(laenge, spitze)
end_poly()
hand_form = get_poly()
register_shape(name, hand_form)
def clockface(radius):
reset()
pensize(7)
for i in range(60):
jump(radius)
if i % 5 == 0:
fd(25)
jump(-radius-25)
else:
dot(3)
jump(-radius)
rt(6)
def setup():
global second_hand, minute_hand, hour_hand, writer
mode("logo")
make_hand_shape("second_hand", 125, 25)
make_hand_shape("minute_hand", 130, 25)
make_hand_shape("hour_hand", 90, 25)
clockface(160)
second_hand = Turtle()
second_hand.shape("second_hand")
second_hand.color("gray20", "gray80")
minute_hand = Turtle()
minute_hand.shape("minute_hand")
minute_hand.color("blue1", "red1")
hour_hand = Turtle()
hour_hand.shape("hour_hand")
hour_hand.color("blue3", "red3")
for hand in second_hand, minute_hand, hour_hand:
hand.resizemode("user")
hand.shapesize(1, 1, 3)
hand.speed(0)
ht()
writer = Turtle()
#writer.mode("logo")
writer.ht()
writer.pu()
writer.bk(85)
def wochentag(t):
wochentag = ["Lundi", "Mardi", "Mercredi",
"Jeudi", "Vendredi", "Samedi", "Dimanche"]
return wochentag[t.weekday()]
def datum(z):
monat = ["Janvier /", "Fevrier /", "Mars /", "Avril /", "Mai /", "Juin /",
"Juillet /", "Août /", "Septembre /", "Octobre/", "Novembre /", "Decembre /"]
j = z.year
m = monat[z.month - 1]
t = z.day
return "%s %d %d" % (m, t, j)
def tick():
t = datetime.today()
sekunde = t.second + t.microsecond*0.000001
minute = t.minute + sekunde/60.0
stunde = t.hour + minute/60.0
try:
tracer(False) # Terminator can occur here
writer.clear()
writer.home()
writer.forward(65)
writer.write(wochentag(t),
align="center", font=("Courier", 14, "bold"))
writer.back(150)
writer.write(datum(t),
align="center", font=("Courier", 14, "bold"))
writer.forward(85)
tracer(True)
second_hand.setheading(6*sekunde) # or here
minute_hand.setheading(6*minute)
hour_hand.setheading(30*stunde)
tracer(True)
ontimer(tick, 100)
except Terminator:
pass # turtle user pressed STOP
def main():
tracer(False)
setup()
tracer(True)
tick()
return "Aurevoir!! Ha! Ha!"
if __name__ == "__main__":
mode("logo")
msg = main()
print(msg)
mainloop()
input()
Hors ligne
#8 Le 15/05/2015, à 12:17
- effects33
Re : chronometre en python
from turtle import *
from datetime import datetime
def jump(distanz, winkel=0):
penup()
right(winkel)
forward(distanz)
left(winkel)
pendown()
def hand(laenge, spitze):
fd(laenge*1.15)
rt(90)
fd(spitze/2.0)
lt(120)
fd(spitze)
lt(120)
fd(spitze)
lt(120)
fd(spitze/2.0)
def make_hand_shape(name, laenge, spitze):
reset()
jump(-laenge*0.15)
begin_poly()
hand(laenge, spitze)
end_poly()
hand_form = get_poly()
register_shape(name, hand_form)
def clockface(radius):
reset()
pensize(7)
for i in range(60):
jump(radius)
if i % 5 == 0:
fd(25)
jump(-radius-25)
else:
dot(3)
jump(-radius)
rt(6)
def setup():
global second_hand, minute_hand, hour_hand, writer
mode("logo")
make_hand_shape("second_hand", 125, 25)
make_hand_shape("minute_hand", 130, 25)
make_hand_shape("hour_hand", 90, 25)
clockface(160)
second_hand = Turtle()
second_hand.shape("second_hand")
second_hand.color("gray20", "gray80")
minute_hand = Turtle()
minute_hand.shape("minute_hand")
minute_hand.color("blue1", "red1")
hour_hand = Turtle()
hour_hand.shape("hour_hand")
hour_hand.color("blue3", "red3")
for hand in second_hand, minute_hand, hour_hand:
hand.resizemode("user")
hand.shapesize(1, 1, 3)
hand.speed(0)
ht()
writer = Turtle()
#writer.mode("logo")
writer.ht()
writer.pu()
writer.bk(85)
def wochentag(t):
wochentag = ["Lundi", "Mardi", "Mercredi",
"Jeudi", "Vendredi", "Samedi", "Dimanche"]
return wochentag[t.weekday()]
def datum(z):
monat = ["Janvier /", "Fevrier /", "Mars /", "Avril /", "Mai /", "Juin /",
"Juillet /", "Août /", "Septembre /", "Octobre/", "Novembre /", "Decembre /"]
j = z.year
m = monat[z.month - 1]
t = z.day
return "%s %d %d" % (m, t, j)
def tick():
t = datetime.today()
sekunde = t.second + t.microsecond*0.000001
minute = t.minute + sekunde/60.0
stunde = t.hour + minute/60.0
try:
tracer(False) # Terminator can occur here
writer.clear()
writer.home()
writer.forward(65)
writer.write(wochentag(t),
align="center", font=("Courier", 14, "bold"))
writer.back(150)
writer.write(datum(t),
align="center", font=("Courier", 14, "bold"))
writer.forward(85)
tracer(True)
second_hand.setheading(6*sekunde) # or here
minute_hand.setheading(6*minute)
hour_hand.setheading(30*stunde)
tracer(True)
ontimer(tick, 100)
except Terminator:
pass # turtle user pressed STOP
def main():
tracer(False)
setup()
tracer(True)
tick()
return "Aurevoir!! Ha! Ha!"
if __name__ == "__main__":
mode("logo")
msg = main()
print(msg)
mainloop()
input()
Hors ligne
#9 Le 15/05/2015, à 12:19
- effects33
Re : chronometre en python
comment vous faites pour mettre sur un carré noir
Hors ligne
#10 Le 15/05/2015, à 12:52
- Compte anonymisé
Re : chronometre en python
comment vous faites pour mettre sur un carré noir
Ecrire son message entre les balises
[code]Ton texte dans un carré noir[/code]
Ou appuyer sur <> pour avoir ces balises.
Pages : 1