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 :

Class Python Tkinter


Sujet :

Tkinter Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2009
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Class Python Tkinter
    Bonjour,

    En fait je voudrais me définir une librairie Python Tkinter avec des forme prédéfinie car la plus part des application que je vais avoir à développer ont presques toutes la même forme.

    Comme je découvre la programmation objet avec python, je ne suis pas très sùr de m'y prendre correctement ou en tout cas intélligement !!!

    Ma question porte principalement sur la mécanique du fonctionnement de l'héritage en python !!!

    est-ce que je suis obligé de refaire appel à une class pour en hérité ?

    exemple:
    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
    class win(object): 
    
       def __init__(self,name): 
          self.mainWin = Tk() 
          self.mainWin.title(name) 
    
    class winStd(win): 
    
       def __init__(self,name): 
          win.__init__(self,name) 
          self.btExit = Button(None, text = 'Exit', command = self.mainWin.destroy ) 
          self.btExit.pack( fill = X, side = TOP, expand = 1 ) 
    
    class winLaunch(winStd): 
    
       def __init__(self,name,cmd): 
          winStd.__init__(self,name) 
          self.btLaunch = Button(None, text = 'Launch', command = cmd ) 
          self.btLaunch.pack( fill = X, side = TOP, expand = 1 )

    j'ai mis en rouge la class, son héritage dans la class winStd et son rappel dans le def __init__.


    Désolé si je suis brouillon mais je commence se boulôt et les forums de manière général ne sont pas ma tasse de thé !!

    Merci

    Bye Keyve

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

    Pour dire que B hérite de A, il faut déclarer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class A: 
        pass
    class B(A): 
        pass
    Après si on "surcharge" dans B une méthode de A, genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class A: 
        def foo(self): 
            print ('foo from A')
    class B(A): 
        def foo(self): 
            print ('foo from B')
    Se pose la question de savoir si B.foo remplace et oublie A.foo ou s'il le complète au sens... depuis B.foo, il serait bon d'appeler A.foo:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class A: 
        def foo(self): 
             print ('foo from A')
    class B(A): 
        def foo(self): 
             print ('foo from B')
             super().foo()
    Ceci dit, __init__ est une méthode comme une autre mais comme elle est appelée pour la construction de l'instance, l'appel à la surclasse est rarement une option.

    - W

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

    Pour ce qui est de tkinter, il s'occupe déjà de créer des classes donc pas
    la peine de partir sur une hiérarchie compliquée si c'est pour ne rien mettre dedans d'autant qu'il y a derrière toute une hiérarchie de nommage sur laquelle on peut s'appuyer pour retrouver ses billes (si elles sont bien rangées, certes, mais il faudra travailler pour que "sa" propre hiérarchie soit un peu meilleure que celle déjà là)

    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
    import tkinter as tk
    from tkinter.constants import *
     
    def mainWindow(title):
        w = tk.Tk()
        w['title'] = title
        return w
     
    def add_button(w, text, cmd, **kwds):
        b = Button(w, text = text, command = cmd, **kwds ) 
        b.pack( fill = X, side = TOP, expand = 1 ) 
     
    w = mainWindow('titre')
    add_button(w, 'Exit', w.destroy, name='btn_exit')
    add_button(w, 'Next', w.quit, name='btn_quit')
    w.mainloop()
    # on clique sur 'Next' pour se retrouver ici
    # on récupère le bouton
    b = w.children.get('btn_quit')
    b.destroy()
    # et il a disparu...
    w.mainloop()
    - W

Discussions similaires

  1. python tkinter et les classes
    Par surfing_lezard dans le forum Tkinter
    Réponses: 12
    Dernier message: 26/07/2012, 06h09
  2. python, tkinter et les sockets (et les threads)
    Par bomberwaterman dans le forum Réseau/Web
    Réponses: 6
    Dernier message: 02/01/2009, 19h53
  3. python C API: convertir une struct C en Class python
    Par dmichel dans le forum Interfaçage autre langage
    Réponses: 11
    Dernier message: 25/06/2008, 16h30
  4. Conteneurs en Python Tkinter ?
    Par tuxout dans le forum Tkinter
    Réponses: 2
    Dernier message: 09/04/2007, 18h46
  5. Definition d'une classe python dans plusieurs fichiers
    Par wfargo dans le forum Général Python
    Réponses: 3
    Dernier message: 05/12/2006, 23h03

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