Contenu | Rechercher | Menus

Annonce

T-shirt Seiche Cosmic, Série limitée

L'équipe des administrateurs et modérateurs du forum vous invite à prendre connaissance des nouvelles règles.
En cas de besoin, vous pouvez intervenir dans cette discussion.

Ubuntu 18.10
T-shirt Ubuntu-FR « Seiche Cosmique » en série limitée ! Prix spécial pré-vente (15€) jusqu'au 4 novembre 2018.

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 01/05/2018, à 00: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, à 14:30)

Hors ligne

#2 Le 01/05/2018, à 08: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

En ligne

#3 Le 01/05/2018, à 11: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, à 11:40)

Hors ligne

#4 Le 01/05/2018, à 12:30

pingouinux

Re : [Résolu] compte à rebours

benek #3 a écrit :

... 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)..

En ligne

#5 Le 01/05/2018, à 12: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, à 13:20

pingouinux

Re : [Résolu] compte à rebours

benek #5 a écrit :

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

En ligne

#7 Le 01/05/2018, à 22: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, à 22:49

pingouinux

Re : [Résolu] compte à rebours

Si c'est bon, merci de modifier ton premier message pour ajouter [Résolu] dans le titre.

En ligne