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 :

Exécuter une Class qu'une seule fois [Python 3.X]


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Par défaut Exécuter une Class qu'une seule fois
    Bonjour,
    Je suis sous python 3.4.3 et j'ai le problème suivant:
    Il faudrait exécuter le class qu'une seule fois et ensuite quitter la loop de la class pour passer à la suite du programme. La partie du code où est la Class est la suivante :



    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
    root = Tk()
    app=Application(master=root)
    app.mainloop()
    root.destroy()
    
    class Application(Frame):
    
        def Left(self):
            global x
            global y
            global Tabl
            x=x-30
            can.coords(Per,x,y)
            print ("lol")
    
        def Right(self):
            global x
            global y
            global Tabl
            x=x+30
            can.coords(Per,x,y)
            print ("lol")
    
        def Top(self):
            global x
            global y
            global Tabl
            y=y-30
            can.coords(Per,x,y)
            print ("lol")
    
        def Bottom(self):
            global x
            global y
            global Tabl
            y=y+30
            can.coords(Per,x,y)
            print ("lol")
    
        def createWidgets(self):
            self.LEFT = Button(self)
            self.LEFT["text"] = "Gauche"
            self.LEFT["fg"]   = "blue"
            self.LEFT["command"] =  self.Left
            self.LEFT["command"] =  self.quit     #Ici j'aimerais qu'il exécute self.Left une seule fois puis qu'il arrête tout. En gros il faudrait exécuter self.Left et ensuite self.quit.
            self.LEFT.pack({"side": "left"})
            
            self.RIGHT = Button(self)
            self.RIGHT["text"] = "Droite"
            self.RIGHT["fg"]   = "purple"
            self.RIGHT["command"] = self.Right
            self.RIGHT["command"] =  self.quit
            self.RIGHT.pack({"side": "right"})
    
            self.TOP = Button(self)
            self.TOP["text"] = "Haut"
            self.TOP["fg"]   = "green"
            self.TOP["command"] =  self.Top
            self.TOP["command"] =  self.quit
            self.TOP.pack({"side": "top"})
    
            self.BOTTOM = Button(self)
            self.BOTTOM["text"] = "Bas"
            self.BOTTOM["fg"]   = "red"
            self.BOTTOM["command"] =  self.Bottom
            self.BOTTOM["command"] =  self.quit
            self.BOTTOM.pack({"side": "bottom"})
    
        def __init__(self, master=None):
            Frame.__init__(self, master)
            self.pack()
            self.createWidgets()

    Je vous remercie d'avance pour votre aide.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    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 738
    Par défaut
    Salut,

    Pourquoi ne pas ajouter un appel à self.quit à la fin de la méthode Left?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        def Left(self):
            global x
            global y
            global Tabl
            x=x-30
            can.coords(Per,x,y)
            print ("lol")
            self.quit()
    - 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
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Par défaut
    Merci beaucoup pour votre aide. Avant une modification de la façon de se déplacer (en utilisant des events clavier) et pour une raison x cela n'avait pas fonctionné mais maintenant c'est bon. Merci !

    Sinon sauriez-vous justement comment exécuter qu'une seule fois un event? Voici l'ancien code ci-dessous:

    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
    fen.bind('<Right>', right)
    fen.bind('<Left>', left)
    fen.bind('<Up>' , up)
    fen.bind('<Down>', down)
    fen.mainloop()
     
    def left(event):
        global x
        global y
        x=x-30
        can.coords(Per,x,y)
    def right(event):
        global x
        global y
        x+=30
        can.coords(Per,x,y)
    def up(event):
        global x
        global y
        y=y-30
        can.coords(Per,x,y)
    def down(event):
        global x
        global y
        y+=30
        can.coords(Per,x,y)
    Je voulais avant mettre cela dans une fonction et quitter la fonction dès qu'un event est utilisé mais je n'y arrivait pas . Pourriez-vous me dire comment il aurait fallu faire svp? Merci

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    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 738
    Par défaut
    Salut,

    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    def left(event):
        global x
        global y
        x=x-30
        can.coords(Per,x,y)
        fen.unbind('<Left>')
    Mais vous avez un excellent tuto. pour apprendre les rudiments de tkinter (entre autres).
    Profitez en (car c'est loin d'être intuitif).

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

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2015
    Messages : 4
    Par défaut
    Je vous remercie beaucoup pour votre aide. Bonne soirée

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

Discussions similaires

  1. Eval d'une propriété d'une classe dans une classe
    Par bizet dans le forum ASP.NET
    Réponses: 4
    Dernier message: 28/10/2008, 09h43
  2. [POO] Utilisation d'une classe dans une classe !
    Par Okinou dans le forum Langage
    Réponses: 3
    Dernier message: 16/02/2006, 14h34
  3. Une classe dans une classe...
    Par Baquardie dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/09/2005, 19h36
  4. Réponses: 2
    Dernier message: 31/08/2005, 16h12
  5. Réponses: 4
    Dernier message: 17/03/2004, 17h24

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