Pages : 1
#1 Le 30/04/2018, à 23:01
- benek
[Résolu] compte à rebours
Bonjour
Je viens d'acheter un raspberry pi 3 et je n'ai aucune connaissance en programmation.
Dans le cadre de faire un jeu j'ai acheter ce raspberry dans l'unique but de faire un compte à rebours de 1h (ou 59 minutes 59 secondes).
J'ai trouvé un compte a rebours qui me plait vraiment "niveau graphique", le problème est qu'il dépend d'une date de calendrier, ce n'est du coup pas pratique du tout pour moi de lancer rapidement et de manière précise un compte a rebours qui commence à 1h tout pile.
Peut-on remplacer "datetime" par un truc du genre "time"? ou alors avez vous une autre solution à me proposer?
Merci d'avance
#!/usr/bin/python
from tkinter import *
from tkinter import ttk
from tkinter import font
import time
import datetime
global endTime
def quit(*args):
root.destroy()
def show_time():
# Get the time remaining until the event
remainder = endTime - datetime.datetime.now()
# remove the microseconds part
remainder = remainder - datetime.timedelta(microseconds=remainder.microseconds)
# Show the time left
txt.set(remainder)
# Trigger the countdown after 1000ms
root.after(1000, show_time)
# Use tkinter lib for showing the clock
root = Tk()
root.attributes("-fullscreen", True)
root.configure(background='black')
root.bind("x", quit)
root.after(1000, show_time)
# Set the end date and time for the countdown
endTime = datetime.datetime (2018,5,1,2,39,00)
fnt = font.Font(family='Helvetica', size=200, weight='bold')
txt = StringVar()
lbl = ttk.Label(root, textvariable=txt, font=fnt, foreground="red", background="black")
lbl.place(relx=0.5, rely=0.5, anchor=CENTER)
root.mainloop()
Modération : merci d'utiliser les balises code (explications ici).
Dernière modification par benek (Le 02/05/2018, à 13:30)
Hors ligne
#2 Le 01/05/2018, à 07:00
- pingouinux
Re : [Résolu] compte à rebours
Bonjour,
Tu peux essayer en remplaçant la ligne n° 32
endTime = datetime.datetime (2018,5,1,2,39,00)
par
endTime = datetime.datetime.now() + datetime.timedelta(0,3600)
J'ai aussi été obligé de remplacer la première ligne par
#!/usr/bin/python3
Hors ligne
#3 Le 01/05/2018, à 10:39
- benek
Re : [Résolu] compte à rebours
Merci énormement Pingouinux
Ça à l'air tellement simple pour toi que je me dois de te demander si par hasard tu savais comment supprimer le premier chiffre afin d'avoir 59:58 et non 0:59:58
En tout cas merci encore
Dernière modification par benek (Le 01/05/2018, à 10:40)
Hors ligne
#4 Le 01/05/2018, à 11:30
- pingouinux
Re : [Résolu] compte à rebours
... si par hasard tu savais comment supprimer le premier chiffre afin d'avoir 59:58 et non 0:59:58
Remplace la ligne n° 20
txt.set(remainder)
par
txt.set(str(remainder)[2:])
Est-ce voulu que ton décompte ne s'arrête pas à 0 ? Il passe de "00:00" à "-1 day, 23:59:59", mais on ne voit pas le "-1" à cause de la manip sur la ligne n° 20 (suppression des 2 premiers caractères)..
Hors ligne
#5 Le 01/05/2018, à 11:40
- benek
Re : [Résolu] compte à rebours
Je ne l'ai pas encore lancé un pendant un cycle complet je ne savais pas qu'il ne s’arrêtait pas a 00:00, effectivement je préférerais qu'il s’arrête à 00:00 et que ça reste figé jusqu’à ce que je le relance.
Hors ligne
#6 Le 01/05/2018, à 12:20
- pingouinux
Re : [Résolu] compte à rebours
effectivement je préférerais qu'il s’arrête à 00:00 et que ça reste figé jusqu’à ce que je le relance.
Ceci a l'air de marcher, mais c'est un peu du bricolage, car je ne maîtrise pas datetime.
Après la ligne n° 18
remainder = remainder - datetime.timedelta(microseconds=remainder.microseconds)
ajoute ces 2 lignes
zero = datetime.timedelta(0)
if remainder < zero: remainder = zero
Hors ligne
#7 Le 01/05/2018, à 21:46
- benek
Re : [Résolu] compte à rebours
Ca marche nickel tu assures pingouinux en quelques secondes tu m'as réglé 1 semaine de problème.
Merci
Hors ligne
#8 Le 01/05/2018, à 21:49
- pingouinux
Re : [Résolu] compte à rebours
Si c'est bon, merci de modifier ton premier message pour ajouter [Résolu] dans le titre.
Hors ligne
Pages : 1