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 :

Appel d'un Toplevel à partir d'un menu dans une class


Sujet :

Tkinter Python

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur / Enseignant
    Inscrit en
    Février 2012
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur / Enseignant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 115
    Points : 139
    Points
    139
    Par défaut Appel d'un Toplevel à partir d'un menu dans une class
    Bonjour,c'est encore moi, je suis toujours sur windows 7/ Python 3.3 / Tkinter/ SQLIte.

    J'ai fais un code simplifié pour expliquer ce que je souhaiterai faire.

    A partir de ma fenêtre Interface, je souhaite ouvrir une nouvelle fenêtre dialogue.
    Ceci de deux manières :
    - soit avec un bouton, dans cette exemple "Hello". Pour ça il me semble avoir compris.
    - soit à partir du menu crée dans la class Interface en cliquant sur "Ouvrir" du menu "Fichier". Et c'est là que, arg! Comment que je fais ?
    J'ai crois avoir compris qu'à partir de la construction d'un objet il n'était pas possible d'appeler une fonction qui n'est pas connue.
    Mais après, je suis un peu dans l'exercice de la brasse indienne, si vous voyez ce que je veux dire...


    interface.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
    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
    ## Importation de fonctions externes :
     
    from tkinter import *
    from tkinter.messagebox import *
    from dialogue import *
     
    #####################################################################################
    ## Définition locale des classe et fonctions :
    class Interface(Tk):
        """ Interface de l'application avec la bese de données SQLite3 """
        def __init__(self, parent, titre):
            Tk.__init__(self, parent)
            self.parent = parent
            self.protocol("WM_DELETE_WINDOW", self.quitter)
            self.title(titre)
            self.initialise()
     
        def initialise(self):
            " définit les éléments graphique "
     
            #------ Création barre Menus : Fichier, Outils, Aides ... -----
            self.barMenu = Menu(self, tearoff = 0)
     
            self.fichier = Menu(self.barMenu, tearoff = 0)
            self.barMenu.add_cascade(label = "Fichier", underline = 0, menu = self.fichier)
            self.fichier.add_command(label = "Ouvrir", underline = 0, command = self.ouvrir)
            self.fichier.add_command(label = "Quitter", underline = 0, command = self.quitter)
     
            self.config(menu = self.barMenu)
     
        def ouvrir(self): pass
     
        def quitter(self):
            self.rep = askokcancel("Confirmation de fermeture", "Vous voulez quitter ?")
            if self.rep:
                self.destroy()
     
    #####################################################################################
    ## Corps principal du programme
    def popDialog():
        d = Dialog(racine, titre = "Module d'essai", offx = 100, offy = 100)
     
    def quitter():
        q = Interface.quitter()
     
    if __name__ == "__main__" :
        racine = Interface(None, "Mon Application")
     
        cadreRacine = Frame(racine)
        cadreRacine.pack(padx = 150, pady =100)
        Button(cadreRacine, text = "Hello", command = popDialog).pack(padx = 10, pady = 10)
        racine.protocol("WM_DELETE_WINDOW", quitter)
        racine.mainloop()
        racine.destroy()
    dialogue.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
    25
    26
    27
    #####################################################################################
    ## Importation de fonctions externes :
     
    from tkinter import *
     
    #####################################################################################
    ## Définition locale de classe et fonctions :
    class Dialog(Toplevel):
        """ Définit une fenêtre de dialogue """
        def __init__(self, conteneur, titre = None, center = False, offx = 300, offy = 300):
            Toplevel.__init__(self, conteneur)
            self.conteneur = conteneur
            self.protocol("WM_DELETE_WINDOW", self.annuler)
            self.transient(conteneur)
     
            #------ Titre hérité de Toplevel ------------------------
            if titre :
                self.title(titre)
            self.initialise()
     
        def initialise(self):
            " Définit les éléments graphiques "
            cadre = Frame(self, height = 200, width = 200)
            cadre.pack(padx = 10, pady = 10)
     
        def annuler(self):
            self.destroy()

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

    Pourquoi ne pas écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
           self.barMenu.add_cascade(label = "Fichier", underline = 0, menu = popDialog)
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur / Enseignant
    Inscrit en
    Février 2012
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur / Enseignant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 115
    Points : 139
    Points
    139
    Par défaut
    Parce que j'avais essayé et que j'avais un message d'erreur en retour. Du coup suite à ta réponse, je viens d'essayer à nouveau et "PAF!" (Claque derrière la tête)

    Merci beaucoup pour ta réponse. Il faut dire que je sature un peu. Mais je suis très content de ma progression.
    Encore une fois merci beaucoup pour tes compétences et surtout pour ta disponibilité.

    Comment savoir quand on passe de débutant à intermédiaire ? Quand on passe plus de temps dans le code que dans la documentation?

    JM

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par melwin Voir le message
    Parce que j'avais essayé et que j'avais un message d'erreur en retour. Du coup suite à ta réponse, je viens d'essayer à nouveau et "PAF!" (Claque derrière la tête)

    Merci beaucoup pour ta réponse. Il faut dire que je sature un peu. Mais je suis très content de ma progression.
    Encore une fois merci beaucoup pour tes compétences et surtout pour ta disponibilité.

    Comment savoir quand on passe de débutant à intermédiaire ? Quand on passe plus de temps dans le code que dans la documentation?
    Vous avez essayé la solution sans trop y croire.
    En plus vous sortez toute la batterie modules/class des machins utiles pour "structurer" de gros codes.
    Elles ont l'inconvénient de camoufler les évidences dans un brouillard +/- épais.

    "intermédiaire", c'est quand vous aurez un peu plus confiance en vous pour ne pas utiliser tout ce bric à brac avant que ce soit utile: çà viendra

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

  5. #5
    Membre habitué
    Homme Profil pro
    Ingénieur / Enseignant
    Inscrit en
    Février 2012
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur / Enseignant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 115
    Points : 139
    Points
    139
    Par défaut
    C'est effectivement plus un problème de confiance.

    Effectivement, je me rends compte que je me simplifierai la vie si j'évitais pour l'instant de structurer mon programme de la sorte avec les modules/class.
    Mais en même temps ça m'a permis d' appréhender et d'apprendre certaines notions.

    A partir de quel volume peut on parler de gros code ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par melwin Voir le message
    Comment savoir quand on passe de débutant à intermédiaire ? Quand on passe plus de temps dans le code que dans la documentation?

    JM
    Bonjour,

    Quelle drôle de question ?

    Un expert est intermédiaire sur les sujets qu'il maîtrise mal et encore un débutant s'il rencontre sur sa route quelque chose de suffisamment nouveau pour lui.

    Un intermédiaire est expert dans ce qu'il sait déjà et débutant dans ce qui lui reste à apprendre.

    Un débutant pourrait être un bon intermédiaire voire un expert dans ce qu'il maîtrise s'il n'essayait pas de quantifier sa place au lieu de progresser dans son art.

    Que dire d'autre ? Tant que vous apprenez encore quelque chose de la vie, c'est que vous n'êtes pas complètement foutu.

    "C'est en faisant qu'on devient faiseron", disait mon grand-père.

    Certains disent "qu'importe le flacon, pourvu qu'on ait l'ivresse", moi, je dis : "qu'importe la hiérarchie, pourvu qu'on ait la passion".

    @+.

  7. #7
    Membre habitué
    Homme Profil pro
    Ingénieur / Enseignant
    Inscrit en
    Février 2012
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur / Enseignant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 115
    Points : 139
    Points
    139
    Par défaut
    Que voulez-vous, on ne se refait pas. Je me pose beaucoup (trop ?) de questions.

    Donc je ne suis pas encore foutu, c'est déjà ça, pourtant parfois on se pose la question et je ne suis pas le seul dans ce cas...

    Comme je disais c'est en sciant que Léonard De Vinci... (c'est mieux comme ça)

    L'ivresse , la passion pas de problème de mon côté, mais allez leur expliquer, ça arrangerait bien ma situation...

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/05/2010, 17h10
  2. Un menu dans une classe à part ?
    Par Stéphane Bruckert dans le forum Débuter
    Réponses: 1
    Dernier message: 30/05/2009, 12h45
  3. Menu a partir d'un bouton dans une form
    Par olibara dans le forum C#
    Réponses: 2
    Dernier message: 18/06/2008, 07h59
  4. Réponses: 3
    Dernier message: 28/05/2007, 13h11
  5. appel de pages htm à partir d'un menu
    Par Alec_timisoara dans le forum MFC
    Réponses: 3
    Dernier message: 12/01/2007, 13h40

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