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

Tkinter Python Discussion :

Commande bouton ( pause ou annuler) pour une boucle infinie


Sujet :

Tkinter Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 12
    Points : 12
    Points
    12
    Par défaut Commande bouton ( pause ou annuler) pour une boucle infinie
    Je suis entrain de développer une interface graphique, je souhaite avoir la possibilité de mettre en pause ou d'annuler ce fichier après l'avoir envoyé. Il y a trois boutons (Envoyer, pause et arrêt), j'ai déjà fait la fonction du bouton d'envoi, je dois définir maintenant la fonction du bouton pause et annuler.

    Voici le programme
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    def moh():
     
     
    # Open grbl serial port
    s = serial.Serial('/dev/ttyS0',115200)
     
    # Open g-code file
     
    f = open(file_path.get(), "r");
     
    # Wake up grbl
    s.write("\r\n\r\n".encode('utf8'))
    time.sleep(2)   # Wait for grbl to initialize 
    s.flushInput()  # Flush startup text in serial input
     
    # Stream g-code to grbl
    for line in f:
        l = line.strip() # Strip all EOL characters for consistency
        print ('Sending: ' + l)
        s.write((l + '\n').encode("utf8")) # Send g-code block to grbl
        grbl_out = s.readline().decode("utf8") # Wait for grbl response with carriage return
        print (' : ' + grbl_out)
     
    # Wait here until grbl is finished to close serial port and file.
    raw_input("  Press <Enter> to exit and disable grbl.") 
     
    # Close file and serial port
    f.close()
    s.close()
     
    b1= Button(Outil, text ="Send",background='White', command=moh)

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 778
    Points
    36 778
    Par défaut
    Salut,

    Citation Envoyé par mo7amedelhadi Voir le message
    Je suis entrain de développer une interface graphique, je souhaite avoir la possibilité de mettre en pause ou d'annuler ce fichier après l'avoir envoyé. Il y a trois boutons (Envoyer, pause et arrêt), j'ai déjà fait la fonction du bouton d'envoi, je dois définir maintenant la fonction du bouton pause et annuler.
    Et quelle est la question ?

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

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Je veux que le programme se répète en boucle a partir de cette commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        print ('Sending: ' + l)
        s.write((l + '\n').encode("utf8")) # Send g-code block to grbl
        grbl_out = s.readline().decode("utf8") # Wait for grbl response with carriage return
        print (' : ' + grbl_out)

    avec une possibilité d'arrêter la boucle par un bouton définit (Arrêter)

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 778
    Points
    36 778
    Par défaut
    La seule chose que je peux vous proposer est un exemple de chronomètre qui réalise start, stop, reset.
    Vous pourriez étudiez sa logique et la réutiliser pour votre code à vous.

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    import tkinter as tk
    import tkinter.font as font
    import time
     
    def create_clock(master=None):
        clock = tk.Frame(master)
     
        ignore = False
        def on_configure(event):
            nonlocal ignore
            print ('on_configure')
            size = label.winfo_width()
            if ignore:
                ignore = False
            else:
                _font['size'] = str(-size//6) # need rework
                ignore = True
     
        _font = font.Font(family="Tahoma", weight='bold', size=10)
        label = tk.Label(clock, text='00:00:00', font=_font)
        label.pack(fill='x', expand=1)
        label.bind("<Configure>", on_configure)
     
        _timer = None
        _start_time = 0.0
     
        def _update(delay=100):
            nonlocal _timer
            elapsed = time.time() - _start_time
            m, s = divmod(elapsed, 60) # need rework
            t = int(s)
            s, ms = t, int((s - t)*100)
            #print (m, s, ms)
            label['text'] = '%02d:%02d:%02d' % (m, s, ms)
            _timer = clock.after(delay, _update)
     
     
        def _start():
            nonlocal _timer, _start_time
            if not _timer:
                _start_time = time.time()
                _update()
     
        def _stop():
            nonlocal _timer
            if _timer:
                clock.after_cancel(_timer)
                _timer = None
     
        def _reset():
            nonlocal _start_time
            _start_time = time.time()
     
        clock.commands = {
            'Start': _start,
            'Reset' : _reset,
            'Stop': _stop,
            }     
     
     
        return clock
     
    if __name__ == '__main__':
     
        root = tk.Tk()
        clock = create_clock(root)
        clock.pack(fill='x', expand=1)
     
        for label, action in clock.commands.items():
            tk.Button(text=label, command=action).pack(side='left')
     
        tk.Button(root, text='Quit', command=root.quit).pack(side='left')
     
        tk.mainloop()
    Je comprends que c'est peut être difficile à lire/comprendre mais si vous voulez qu'on se mette à votre niveau, il faut commencez à coder quelque chose et si çà ne fonctionne pas exposer les difficultés rencontrées avec le risque qu'on vous demande d'ouvrir un tuto. pour apprendre les bases de la programmation avec tkinter.

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

Discussions similaires

  1. Bouton "annuler" dans une boucle
    Par buzza01 dans le forum Langage
    Réponses: 2
    Dernier message: 08/08/2011, 20h29
  2. Instruction pour arreter une boucle infinie
    Par pitizone dans le forum MATLAB
    Réponses: 2
    Dernier message: 22/03/2007, 14h42
  3. Réponses: 2
    Dernier message: 12/03/2007, 14h48
  4. Besoin d'aide pour une boucle
    Par lenneth666 dans le forum Prolog
    Réponses: 2
    Dernier message: 27/12/2006, 15h41
  5. utiliser une valeur float pour une boucle for
    Par didi59650 dans le forum Débuter
    Réponses: 6
    Dernier message: 18/04/2006, 17h32

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