IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GUI Python Discussion :

execution periodique avec GUI


Sujet :

GUI Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Islande

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Par défaut execution periodique avec GUI
    Bonjour,
    je recherche un moyen simple d´executer periodiquement (toutes les x min.) une commande. L´execution periodique doit commencer quand l´utilisateur appuie sur un bouton "commencer" et s´arreter lorsqu´il appuie sur un bouton "terminer".

    J´ai bien reussi avec Tkinter de Python a faire les boutons, mais je ne sais pas comment faire l´execution periodique qui s´arreterait quand on appuie sur un bouton.
    Quelqu´un pourrait-il me dire comment faire? Si possible sans trop consommer de ressource.

  2. #2
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Pas compris: Si c'est périodique pas besoin de bouton "commencer" /"terminer". Cela se passe via un daemon/thread etc... Et pas besoin de GUI.
    Pouvez vous préciser ce que vous voulez faire ?
    Pour ce qui est de Tkinter avez vous vus que le Widget Button a une option command ? C'est pour spécifier une fonction a exécuter.

    @+

  3. #3
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Voila pour la partie GUI
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    import sys
     
    if sys.version_info[0] > 2:
        import tkinter as tk
    else:
        import Tkinter as tk
     
    def hideme():
        root.withdraw()
        root.after(2000, root.deiconify) # 2000 est en ms
     
    root = tk.Tk()
    tk.Button(root, text="Cacher", command=hideme).pack(padx=5, pady=5)
    tk.Button(root, text="Quitter", command=root.destroy).pack(padx=5, pady=5)
    root.mainloop()
    Pour le reste dans l'attente de vous lire.

    @+

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Moi, je comprends plutôt que le bouton sert simplement à mettre en marche le timer et ensuite à le stopper.

    Si c'est bien cela, il suffit de montrer le code du timer, il doit bien y avoir un moyen de l'arrêter.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Islande

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Par défaut
    Ce que j´ entends par periodique c´est une repetition a intervalle regulier d´une commande jusqu´a ce que l´utilisateur dise: stop. L´information stop peut etre donne par GUI, ce n´est effectivement pas obligatoire, mais plus pratique.

    Je pourrais lancer une boucle infinie genre:

    while true
    ma commande
    pause x min

    et "killer" le processus quand je veux l´arreter, mais ce n´est pas tres elegant comme methode!

    En fait j´ai ecrit un script python qui actualise une base de donnee. J´aimerai pouvoir lancer regulierement (toutes les x min.) ce script quand j´ai besoin d´avoir cette base de donnee toujours actualisee. Quand je n´en ai plus besoin, j´aimerais pouvoir arreter l´actualisation de ma base de donnee.

  6. #6
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    C'est bien ce que j'avais copris, mais ton 'timer' tu l'as écrit comment ?

    Un thread ? threading.Timer ?

    Une boucle while, ça m'étonnerait.

    Bref, on veut du code.

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 743
    Par défaut
    Salut

    Avec Tkinter, vous avez la méthode .after(delay, callback) qui permet d'appeler la fonction "callback" après "delay" millisecondes.

    La discussion récente montre comment utiliser la chose pour "répéter" l'opération "tant que".

    La méthode .after retourne un identifiant qui pourra être passé en paramètre à la méthode .cancel pour arrêter le monstre.

    Ces méthodes .after, .cancel sont disponibles pour tous les widgets Tk.
    Vous pouvez aussi lire la discussion qui traite de ce sujet.

    Ces indications devrait vous permettre d'écrire un premier code et de râler sur les aspects que vous ne comprenez pas.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Islande

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Par défaut
    La methode .after(delay, callback) marche nickel! Par contre je n´arrive pas a l´arreter avec le .cancel. Comment utilise-t-on le .cancel? Auriez-vous un exemple?
    Voici un extrait de mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
     
    class App:
    	def __init__(self,parent):
    #...
    	def update_loop(self):
    		#ici ma commade "lancer actualisation". Pr l instant juste un print:
                    print periode
    	        boucle_identifiant=root.after(1000, self.update_loop)
     
     
    	def stop_loop(self):
    		root.cancel(boucle_identifiant)
     
    root = Tk()
    app = App(root)
    root.mainloop()

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. EXECUTE IMMEDIATE avec fonction
    Par aechevar dans le forum Oracle
    Réponses: 1
    Dernier message: 07/07/2006, 20h05
  2. Execution script avec option sur OVH
    Par guepe dans le forum Réseau/Web
    Réponses: 3
    Dernier message: 15/01/2006, 15h54
  3. Execution periodique
    Par aymron dans le forum ASP
    Réponses: 3
    Dernier message: 05/10/2005, 12h24
  4. Execution formulaire avec une variable
    Par dsj dans le forum Access
    Réponses: 9
    Dernier message: 08/09/2005, 19h46
  5. Exécutable Java avec JRE intégré
    Par clawhammer dans le forum JBuilder
    Réponses: 2
    Dernier message: 06/10/2003, 16h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo