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

Python Discussion :

Bouton activé sans clic, de classe à classe


Sujet :

Python

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

    Citation Envoyé par toumic Voir le message
    Après une mûre réflexion, et encore une fois "lambda" GAGNANT !
    Cela suppose que vous avez fait une analyse des avantages/inconvénients de la chose. Vous pourriez les partager...

    Sinon, plutôt qu'utiliser improprement l'héritage, vous pourriez déclarer Gam2 comme classe indépendante "collection de fonctions":

    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
    # !/usr/bin/env python 3.5
    # -*- coding: utf-8 -*-
     
    from tkinter import *
     
    class Gammic(Tk):
        def __init__(self):
            Tk.__init__(self)
            self.title(' :')
            self.ccc = None
            self.a = Button(self, text='Comic', width=15, command=self.Comic)
            self.a.pack()
            self.table = []
     
        def Comic(self):
            if self.ccc is not None:
                self.ccc.destroy()
            self.ccc = Toplevel(self)
            self.ccc.geometry('600x666')
            self.b = Button(self.ccc, text='Comic2', width=15,
                            command = lambda : Gam2.brnch(self.table))
            self.b.pack()
            for i in range(10):
                self.table.append(i)
     
     
    class Gam2:
        def brnch(cob):
            print('o', cob)
     
    Gammic().mainloop()
    çà marche aussi... et là, pas d'autres choix que d'utiliser "lambda" pour fabriquer la fonction/callback passé à "command".

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

  2. #22
    Invité
    Invité(e)
    Par défaut
    Maintenant c'est plus que résolu

  3. #23
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par toumic Voir le message
    Maintenant c'est plus que résolu
    Je m'explique au sujet du choix lambda en destination.

    La classe commatique a comme base, une table construite dans la fonction chromatique de la gamme.
    Cette gamme dans la classe principale a donc une fonction chromatique et une table utile au développement commatique.
    Ce commatisme est volumineux en traitements, et donc il lui faut être une autre classe, et par obligation à référence chromatique.
    Les commas ne viennent pas d'un vide, mais de la gamme en cours calculée par la classe Gammique.

    Si l'opération "lambda" est facile, la création d'une classe fille "Commatique" héritière l'est moins.
    Pour finir la classe Commatique = class Commatique(Gammique):, et sans perturber inutilement = Gammique().mainloop()
    Va pouvoir se servir de tous les objets de la classe Gammique, etc.
    Seulement je travaille avec Pycharm et il me conseille une méthode statique pour la fonction principale de Commatique.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class Commatique(Gammique):
        @staticmethod
        def brnch_1(cob1):
            print('o', cob1)
            # print('p', cob2)
     
     
    # class Gammique
    Gammique().mainloop()
    Mon éditeur est OK, il n'attend plus que le code pour continuer et moi aussi

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

    Citation Envoyé par toumic Voir le message
    Si l'opération "lambda" est facile, la création d'une classe fille "Commatique" héritière l'est moins.
    Ce n'est pas faute de vous avoir montré comment faire.

    Citation Envoyé par toumic Voir le message
    Pour finir la classe Commatique = class Commatique(Gammique):, et sans perturber inutilement = Gammique().mainloop()
    Va pouvoir se servir de tous les objets de la classe Gammique, etc.
    Si vous passez par lambda sans avoir "instancié" proprement Gam2, il vous sera impossible d'accéder aux objets d'un Gammique sans jonglerie inutile est obscure.

    Continuez votre route, vous verrez les écueils qui vous attendent.

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

  5. #25
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Ce n'est pas faute de vous avoir montré comment faire.



    Si vous passez par lambda sans avoir "instancié" proprement Gam2, il vous sera impossible d'accéder aux objets d'un Gammique sans jonglerie inutile est obscure.

    Continuez votre route, vous verrez les écueils qui vous attendent.

    - W
    Est-ce que si j'ajoute le def __init__(self): Gammique.__init__(self), çà évite les écueils ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class Commatique(Gammique):
        """Branchement Commique"""
        def __init__(self):
            Gammique.__init__(self)
     
        @staticmethod
        def brnch_1(cob1, cob2):
            print('o', cob1)
            print('p', cob2)
     
     
    # class Gammique
    Gammique().mainloop()

  6. #26
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    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 790
    Par défaut
    Citation Envoyé par toumic Voir le message
    Est-ce que si j'ajoute le def __init__(self): Gammique.__init__(self), çà évite les écueils ?
    Si vous aviez pris le temps de lire (et comprendre) un tuto. sur les classes et l'héritage, vous ne poseriez pas cette question.
    D'autre part, si j'essayais de vous expliquer pourquoi çà ne change rien, il me faudrait utiliser des mots comme instance, méthode, surcharge, polymorphisme,... que vous ne comprendriez pas sans avoir travaillé sur les tutos de votre côté: çà ne vous avancera pas plus et pas la peine que j'y passe du temps.

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

  7. #27
    Invité
    Invité(e)
    Par défaut
    Si je ne rêve pas, grâce à la première réponse et à votre insistence que çà marche

    Tout en restant dans ma même ligne de mire, et dans un but de réussite. En instance de la nouvelle classe plus sereine,
    ce qui m'évite de chercher dans des solutions beaucoup plus divines...

    Gammique. (__init__)
    A été ajoutée la table à transférer sur Commatique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def cb_com2(self):
            self.com2 = Commatique()
            self.com2.brnch_1(self.co_tbgen)
    Dans la fonction comma et son bouton d'appel Commatique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            btcom_up = Button(frcom_up, text='Commane', height=1, width=15, bg='pink',
                              command=self.cb_com2)
            btcom_up.pack(side=LEFT)
    Pour finir par un truc comique comme çà
    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
    class Commatique(Gammique):
        """Branchement Commique"""
        def __init__(self):
            pass
     
        # @staticmethod
        def brnch_1(self, c_oo):
            print('ooo', c_oo)
            # ('p', cob2)
            for i in range(12):
                pass
                # print(i, self.c_cob1[i])
     
     
    # class Gammique
    Gammique().mainloop()

  8. #28
    Invité
    Invité(e)
    Par défaut
    Et enfin la version simple qui a suivit son cours ici même

    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
    # !/usr/bin/env python 3.5
    # -*- coding: utf-8 -*-
     
    from tkinter import *
     
    class Gammic(Tk):
        def __init__(self):
            Tk.__init__(self)
            self.title(' :')
            self.ccc = None
            self.a = Button(self, text='Comic', width=15, command=self.Comic)
            self.a.pack()
            self.table = []
            self.com2 = Gam2()
     
        def cb_com2(self):
            self.com2.brnch(self.table)
     
        def Comic(self):
            if self.ccc is not None:
                self.ccc.destroy()
            self.ccc = Toplevel(self)
            self.ccc.geometry('600x666')
            self.b = Button(self.ccc, text='Comic2', width=15,
                            command = self.cb_com2)
            self.b.pack()
            for i in range(10):
                self.table.append(i)
     
     
    class Gam2(Gammic):
        def __init__(self):
            pass
        def brnch(self, cob):
            print('ooo', cob)
     
    Gammic().mainloop()

  9. #29
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    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 790
    Par défaut
    Citation Envoyé par toumic Voir le message
    Et enfin la version simple qui a suivit son cours ici même
    Fabriquer une instance de Gammic et créer un autre instance de Gam2 qui hérite de Gammic tout en court-circuitant l'initialisation de la classe parente, c'est très inventif mais çà ne le fait toujours pas.

    Continuez comme vous voulez, mais je n'essaierai de vous aider qu'à partir du moment où vous posterez un code bien construit et montrant que vous avez compris ce que vous aurez appris dans votre tuto. favori.
    Bon courage.

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

  10. #30
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Fabriquer une instance de Gammic et créer un autre instance de Gam2 qui hérite de Gammic tout en court-circuitant l'initialisation de la classe parente, c'est très inventif mais çà ne le fait toujours pas.

    Continuez comme vous voulez, mais je n'essaierai de vous aider qu'à partir du moment où vous posterez un code bien construit et montrant que vous avez compris ce que vous aurez appris dans votre tuto. favori.
    Bon courage.

    - W
    Maintenant çà doit aller, sans l'héritage

    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
    # !/usr/bin/env python 3.5
    # -*- coding: utf-8 -*-
     
    from tkinter import *
     
    class Gammic(Tk):
        def __init__(self):
            Tk.__init__(self)
            self.title(' :')
            self.ccc = None
            self.a = Button(self, text='Comic', width=15, command=self.Comic)
            self.a.pack()
            self.table = []
            self.com2 = Gam2()
     
        def Comic(self):
            if self.ccc is not None:
                self.ccc.destroy()
            self.ccc = Toplevel(self)
            self.ccc.geometry('60x66+60+66')
            self.b = Button(self.ccc, text='Comic2', width=15,
                            command = lambda cob = self.table: self.com2.brnch(cob))
            self.b.pack()
            for i in range(10):
                self.table.append(i)
     
     
    class Gam2:
        def __init__(self):
            self.c_oo = None
        def brnch(self, cob):
            self.c_oo = cob
            print('ooo', self.c_oo)
     
    Gammic().mainloop()

Discussions similaires

  1. ArrayList<Class> class class.setString()
    Par Onelove dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 31/08/2014, 19h42
  2. Créer une classe Activity sans l'afficher
    Par Nicopilami dans le forum Android
    Réponses: 6
    Dernier message: 06/12/2013, 21h43
  3. Exécutable sans besoin de ses classes
    Par Triste dans le forum Débuter
    Réponses: 4
    Dernier message: 25/10/2007, 11h52
  4. Agir sur un bouton sans clic
    Par barbiche dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 04/04/2007, 11h32
  5. Réponses: 14
    Dernier message: 17/11/2006, 19h17

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