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 :

Premier pas avec les class


Sujet :

Tkinter Python

  1. #1
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut Premier pas avec les class
    Bonsoir,

    Je m'essaye aux classes et c'est pas évident.
    Le premier script que j'essaye de réaliser, devrait me permettre de définir une police et de renvoyer les valeurs obtenues dans les arguments d'un Label.

    Pour cela j'ai créé un premier fichier graphic.py

    graphic.py:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class Police:
        def __init__(self, family = 'Arial', size = 10, weight = 'bold'):
            self.F = family
            self.S = size
            self.W = weight
     
        def police(self):
            return self.F, self.S, self.W
    Dans un deuxième fichier appelé essais.py, voici ce que j'ai écrit:

    essais.py:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #-*- coding:Utf-8 -*-
    from Tkinter import *
    import graphic
     
    pol1 = graphic.Police('Verdana', 30, 'bold')
     
     
    def newfen():
     
        fen = Tk()        
        fentxt = Label(fen, text = "MON TEXT", fg = 'dark green', \
                       font = pol1.police())
        fentxt.pack()
        fen.mainloop()
    Mais ceci ne marche pas.


    J'ai bien trouvée une solution plus simple, mais j'aimerai bien comprendre ce qui ne va pas dans mon code.

    Merci d'avance à tous

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 478
    Points : 9 278
    Points
    9 278
    Billets dans le blog
    6
    Par défaut
    Peut-être suffit-il de lancer la fonction newfen()?

  3. #3
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    Je n'ai pas mis la fin de mon code, mais je le lance bien la fonction newfen().

    Pas de souci de ce coté

  4. #4
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 478
    Points : 9 278
    Points
    9 278
    Billets dans le blog
    6
    Par défaut
    J'ai passé plusieurs minutes à chercher pourquoi ton code ne marchait pas, et je n'ai rien trouvé.

    Du coup, je l'ai testé sous IDLE et... il fonctionne!

    Il vient bien une petite fenêtre avec "MON TEXTE" en vert et en gros caractères.

    ???

  5. #5
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    Effectivement cela fonctionne. Je n'ai pas mis tout mon code. J'étais quasi sûr que l'erreur venait de là, mais à priori non.

    J'aurai du essayer juste cette partie. Erreur de débutant...

    Désolé de t'avoir fait perdre ton temps avec ça.

    @+

  6. #6
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut Petite précision
    Bonsoir,

    Je m'essaye toujours au classe.

    Et voici une nouvelle question:
    J'ai créé un fichier (Fichier1.py) dans lequel j'écris mes classes.

    La première de mes classe (dont voici un exemple de code), me permet de créer facilement dans Fichier2.py des fenêtres ayant toutes la même configuration de base.

    Fichier1.py:
    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
    from Tkinter import *
     
    class Fenetre:
        def __init__(self, titre = 'TITRE'):
            self.T = titre
     
            fen = Tk()
            fen.title('MA FENETRE')
            fen.geometry("900x700")
     
            txtfen = Label(fen, text = self.T, fg = 'dark green',\
                           font =('Verdana', 28, 'bold'))
            txtfen.pack(side = 'top')
     
            fen.mainloop()

    Fichier2.py:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #-*- coding:Utf-8 -*-
    from graphic import *
    f1 = Fenetre('Essais')
    Jusqu'à là pas de problème. Si je rajoute des éléments dans Fenetre, il vont apparaître dans f1... Pas de souci.

    Par contre, je ne sais pas rajouter des objets propres à f1 et qui seront donc différents des autres objets propres à d'autres fenêtres éventuelles (f2, f3...)

    J'ai essayé dans Fichier1.py de créer une classe Texte par exemple, et de l'appeler dans Fichier2.py mais ça ne marche pas.

    Voila ce que j'ai fait:

    Fichier1.py:
    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
    #-*- coding:Utf-8 -*-
    from Tkinter import *
     
    class Fenetre:
        def __init__(self, titre = 'TITRE'):
            self.T = titre
     
            fen = Tk()
            fen.title('CONFIGATELL V.1')
            fen.geometry("900x700")
     
            txtfen = Label(fen, text = self.T, fg = 'dark green',\
                           font =('Verdana', 28, 'bold'))
            txtfen.pack(side = 'top')
     
            fen.mainloop()
     
    class Texte:
        def __init__(self, emplacement = 'f1', texte = 'Nv Label'):
            self.E = emplacement
            self.T = texte
     
            txt = Label(self.E, text = self.T)
            txt.pack()
    Fichier2.py:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #-*- coding:Utf-8 -*-
    from graphic import *
     
    f1 = Fenetre('Essais')
    t1 = Texte(f1, 'Voici un nouveau Label')
    Quelqu'un peut-il m'aiguiller?

  7. #7
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 478
    Points : 9 278
    Points
    9 278
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Si la classe représente la fenêtre, il faut l'instancier et la lancer à partir de l'extérieur de la classe. Inspire toi plutôt de l'exemple ici: http://wikipython.flibuste.net/moin....de638d756626b1.

    Ensuite, si tu veux que sur la base de la classe Fenetre tu ais une fenêtre particulière, tu créés une classe dérivée qui héritera de ta classe de base et tu ajoutes la particularité.

  8. #8
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    Si la classe représente la fenêtre, il faut l'instancier et la lancer à partir de l'extérieur de la classe. Inspire toi plutôt de l'exemple ici: http://wikipython.flibuste.net/moin....de638d756626b1.
    Ok, je commence à comprendre l'utilisation des classes et surtout les erreurs que j'avais fait.

    Ensuite, si tu veux que sur la base de la classe Fenetre tu ais une fenêtre particulière, tu créés une classe dérivée qui héritera de ta classe de base et tu ajoutes la particularité.
    Après plusieurs essais j'ai réussi à faire ce que je voulais. Donc c'est impec.

    Un grand merci pour ton aide très précieuse. Je vais pouvoir ainsi continuer mon long et merveilleux apprentissage de Python.

    Mille merci

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

Discussions similaires

  1. Premiers pas avec Java 8 et les expressions lambas.
    Par LGnord dans le forum Langage
    Réponses: 3
    Dernier message: 01/12/2014, 13h56
  2. Premier pas avec les Styles Firemonkey avec XE4
    Par SergioMaster dans le forum Codes sources à télécharger
    Réponses: 8
    Dernier message: 11/06/2014, 19h36
  3. Premier essai avec les classes : échec
    Par Invité dans le forum Débuter
    Réponses: 15
    Dernier message: 08/04/2014, 12h48
  4. Réponses: 4
    Dernier message: 06/10/2010, 20h47
  5. [debutant] premier pas avec le SDK directX9
    Par arno2004 dans le forum DirectX
    Réponses: 6
    Dernier message: 27/05/2004, 21h03

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