Déclenchement d'actions dans une interface tkinter
balisto1633
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
_Ritchi_ Messages postés 21333 Date d'inscription Statut Contributeur Dernière intervention -
_Ritchi_ Messages postés 21333 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour
Je suis un peu fou... mécontent d'un minuteur que nous utilisons au travail pour démarrer / arrêter des génératrices, je me suis mis dans l'idée de le gérer avec un rapsberry PI3 et un programme Python 3.4 en y programmant une interface graphique avec Tkinter.
Je suis un peu fou parce que avant, je n'avais jamais vu un rapsberry et jamais vu une ligne de code Python. Ma seule expérience se situe dans la VBA excel. Comme ça... c'est dit.
J'ai réglé la manière de faire communiquer mon rapsberry avec l'extérieur avec une carte à 4 relais.
Mon idée est d'avoir plusieurs lignes dans une interface qui représentent chacune une plage de fonctionnement de ma génératrice. par exemple ligne 1 démarrage à 0700 et fin à 1200, ligne 2 démarrage à 1330 et fin à 1730.
Je pensais géréer les heures avec des spinbox (1 pour l'heure et une pour les minutes) mais comme mes spinbox s'affichent systématiquement avec 00, si je veux entrer 12h30, cela fait beaucoup de click.
Quelqu'un a-t-il une meilleure idée ou une amélioration pour mon code?
H= Spinbox(fenetre, from_=0, to=23,width=2,state="readonly",wrap = True,format="%02.0f")
H.grid(row=0,column=1)
M = Spinbox(fenetre, from_=00, to=59,width=2,state="readonly",wrap = True,format="%02.0f")
M.grid(row=0,column=2)
La deuxième partie du problème sera: comment je gère ces valeurs pour qu'à l'heure dite, l'action X (ouverture ou fermeture du relais adéquat) se déclenche?
Merci d'avance pour vos réponses.
Je suis un peu fou... mécontent d'un minuteur que nous utilisons au travail pour démarrer / arrêter des génératrices, je me suis mis dans l'idée de le gérer avec un rapsberry PI3 et un programme Python 3.4 en y programmant une interface graphique avec Tkinter.
Je suis un peu fou parce que avant, je n'avais jamais vu un rapsberry et jamais vu une ligne de code Python. Ma seule expérience se situe dans la VBA excel. Comme ça... c'est dit.
J'ai réglé la manière de faire communiquer mon rapsberry avec l'extérieur avec une carte à 4 relais.
Mon idée est d'avoir plusieurs lignes dans une interface qui représentent chacune une plage de fonctionnement de ma génératrice. par exemple ligne 1 démarrage à 0700 et fin à 1200, ligne 2 démarrage à 1330 et fin à 1730.
Je pensais géréer les heures avec des spinbox (1 pour l'heure et une pour les minutes) mais comme mes spinbox s'affichent systématiquement avec 00, si je veux entrer 12h30, cela fait beaucoup de click.
Quelqu'un a-t-il une meilleure idée ou une amélioration pour mon code?
H= Spinbox(fenetre, from_=0, to=23,width=2,state="readonly",wrap = True,format="%02.0f")
H.grid(row=0,column=1)
M = Spinbox(fenetre, from_=00, to=59,width=2,state="readonly",wrap = True,format="%02.0f")
M.grid(row=0,column=2)
La deuxième partie du problème sera: comment je gère ces valeurs pour qu'à l'heure dite, l'action X (ouverture ou fermeture du relais adéquat) se déclenche?
Merci d'avance pour vos réponses.
A voir également:
- Déclenchement d'actions dans une interface tkinter
- Cette action ne peut pas être réalisée car le fichier est ouvert dans system - Guide
- Vous devez disposer d'une autorisation pour effectuer cette action - Guide
- Common interface 5v only - Forum TNT / Satellite / Réception
- Interface netflix - Accueil - Streaming
- Interface gmail - Guide
2 réponses
Bonjour,
Pour la gestion des événements à des heures précises, voici un exemple de code avec le module schedule (plus de détails ici) et le lancement d'une fonction. Je te laisse le soin d'adapter à ton besoin spécifique.
Ritchi
Pour la gestion des événements à des heures précises, voici un exemple de code avec le module schedule (plus de détails ici) et le lancement d'une fonction. Je te laisse le soin d'adapter à ton besoin spécifique.
import time, datetime, schedule TIME = [ ('06.04.2017', '19:49:00', 'relai_1_on()'), ('06.04.2017', '19:49:10', 'relai_1_off()'), ('06.04.2017', '19:49:20', 'relai_2_on()'), ('06.04.2017', '19:49:30', 'relai_2_off()') ] def relai_1_on(): print(" Activation du relai 1 ") # Appeler la fonction qui active le relai 1 def relai_1_off(): print(" Coupure du relai 1 ") # Appeler la fonction qui désactive le relai 1 def relai_2_on(): print(" Activation du relai 2 ") # Appeler la fonction qui active le relai 2 def relai_2_off(): print(" Coupure du relai 2 ") # Appeler la fonction qui désactive le relai 2 def job(): global TIME # on récupère la date et l'heure courante: date = datetime.datetime.now().strftime("%d.%m.%Y %H:%M:%S") # on compare cette date et l'heure courante à celles définies dans TIME: for i in TIME: runTime = i[0] + " " + i[1] # si une la date et heure sont trouvées: if i and date == str(runTime): # on lance la commande indiquée dans TIME eval(i[2]) # On lance toutes les secondes la fonction job(): schedule.every(1).second.do(job) while True: schedule.run_pending() time.sleep(1)
Ritchi
Merci Richi
Un détail me chiffonne dans le principe de controler s'il est temps d'agir, attendre une seconde puis refaire le controle.
Prenons un exemple:
19h00, effectuer action A
19h02, effectuer action B
Si l'ordinateur met 5 minutes à traiter l'acction A, qu'advient-il de l'action B?
merci d'avance pour la réponse
Un détail me chiffonne dans le principe de controler s'il est temps d'agir, attendre une seconde puis refaire le controle.
Prenons un exemple:
19h00, effectuer action A
19h02, effectuer action B
Si l'ordinateur met 5 minutes à traiter l'acction A, qu'advient-il de l'action B?
merci d'avance pour la réponse