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 :

Tkinter : création des fenêtres l'une liée à l'autre


Sujet :

Tkinter Python

  1. #1
    Membre confirmé
    Femme Profil pro
    étudiant master
    Inscrit en
    Février 2014
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiant master

    Informations forums :
    Inscription : Février 2014
    Messages : 167
    Par défaut Tkinter : création des fenêtres l'une liée à l'autre
    salut,

    je n'arrive pas à comprendre l'utilisation de plusieurs classes dans le même code python.
    et sur quelle base on décide de faire 2 ou 3 classes?

    dans mon application, je dois crée des fenêtres, et à chaque fois que je clic sur un bouton de fenêtre1, ça va afficher la 2eme fenêtre et ainsi de suite.

    je voudrai réaliser ça avec des classes, à mon avis le code sera plus organisé, mais est ce que c'est possible selon mon cas d'écrire un code avec plusieurs classes? et comment?

    est ce que chaque fenêtre en une classe?


    j'ai commencé mais je n'ai pas pu continuer, voilà le code:

    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
    import Tkinter
    from Tkinter import *
    import Tix
    from Tix import *
    from ttk import *
     
    class ChoixWilayas(Tix.Tk):
     
        def __init__(self,parent):
     
            Tix.Tk.__init__(self,parent)
            self.parent=parent
            self.initialize()
     
        def initialize(self):
            self.grid()
     
            txt=Label(self, text='')
            txt.grid(row=0)
     
            txt1=Label(self, text='Wilayas :')
            txt1.grid(row=1)
     
            varcombo1 = Tix.StringVar()
            combo1 = Tix.ComboBox(self, editable=1, dropdown=1,variable=varcombo1, command = None)
            combo1.entry.config(state='readonly')  ## met la zone de texte en lecture seule
            combo1.insert(1, 'Mostaganem')
            combo1.grid(row=1,column=1,columnspan=2)
     
            txt=Label(self, text='')
            txt.grid(row=3)
     
            ok=Button(self,text='OK ', command=None)
            ok.grid(row=4,column=1,sticky=E)
     
            close=Button(self,text='Fermer', command=None)
            close.grid(row=4,column=2,sticky=E)
     
    if __name__ == "__main__":
     
        app = ChoixWilayas(None)
        app.title('Choix de la Wilayas')
        app.mainloop()

    je serai heureuse si vous pouvais m'aider et m'expliquer.

    merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par noramokh Voir le message
    salut,

    je n'arrive pas à comprendre l'utilisation de plusieurs classes dans le même code python.
    et sur quelle base on décide de faire 2 ou 3 classes?
    Bonjour,

    une classe, c'est une sorte de paquet dans lequel on place des propriétés (couleur, taille, mode) et des comportements (actions, traitements, etc) pour traiter un sujet donné.

    on appelle membre une variable appartenant à une classe (propriété).

    on appelle méthode une fonction appartenant à une classe (comportement).

    vous pouvez donc créer autant de classes que vous avez besoin d'encapsuler des propriétés et des comportements au sein d'une même structure, d'un même paquet.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class Voiture:
     
        couleur = "rouge" # membre de classe
     
        def rouler (self): # méthode de classe
     
            print("Vroum vroum!")
     
        # end def
     
    # end class Voiture
    après, les habitudes de programmation veulent que l'on code une classe par fichier .py ou plusieurs classes tournant autour d'un même thème dans un seul fichier .py

    je vous renvoie aux innombrables tutoriels sur la programmation orientée objet (POO), dont ceux de developpez.com :

    http://programmation.developpez.com/cours-tutoriels/

    http://rmdiscala.developpez.com/cours/

    http://python.developpez.com/cours/

    Ainsi qu'une recherche élémentaire :

    https://www.google.fr/#q=cours+poo

    dans mon application, je dois crée des fenêtres, et à chaque fois que je clic sur un bouton de fenêtre1, ça va afficher la 2eme fenêtre et ainsi de suite.

    je voudrai réaliser ça avec des classes, à mon avis le code sera plus organisé, mais est ce que c'est possible selon mon cas d'écrire un code avec plusieurs classes? et comment?

    est ce que chaque fenêtre en une classe?


    j'ai commencé mais je n'ai pas pu continuer, voilà le code:

    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
    import Tkinter
    from Tkinter import *
    import Tix
    from Tix import *
    from ttk import *
     
    class ChoixWilayas(Tix.Tk):
     
        def __init__(self,parent):
     
            Tix.Tk.__init__(self,parent)
            self.parent=parent
            self.initialize()
     
        def initialize(self):
            self.grid()
     
            txt=Label(self, text='')
            txt.grid(row=0)
     
            txt1=Label(self, text='Wilayas :')
            txt1.grid(row=1)
     
            varcombo1 = Tix.StringVar()
            combo1 = Tix.ComboBox(self, editable=1, dropdown=1,variable=varcombo1, command = None)
            combo1.entry.config(state='readonly')  ## met la zone de texte en lecture seule
            combo1.insert(1, 'Mostaganem')
            combo1.grid(row=1,column=1,columnspan=2)
     
            txt=Label(self, text='')
            txt.grid(row=3)
     
            ok=Button(self,text='OK ', command=None)
            ok.grid(row=4,column=1,sticky=E)
     
            close=Button(self,text='Fermer', command=None)
            close.grid(row=4,column=2,sticky=E)
     
    if __name__ == "__main__":
     
        app = ChoixWilayas(None)
        app.title('Choix de la Wilayas')
        app.mainloop()

    je serai heureuse si vous pouvais m'aider et m'expliquer.

    merci
    En général, quand on débute, on essaie de ne pas partir avec dix mille librairies en même temps.

    Bonjour la tonne de documentation qu'il faudrait s'avaler !

    Commencez par résoudre vos problèmes avec juste Tkinter, vous songerez à passer à Tix et ttk lorsque vous maîtriserez mieux votre sujet.

    Documentation officielle tkinter :

    http://infohost.nmt.edu/tcc/help/pub...web/index.html

    Une chose après l'autre, ne tentez pas de tout résoudre en une seule fois.

    Bon courage.

    @+.

  3. #3
    Membre confirmé
    Femme Profil pro
    étudiant master
    Inscrit en
    Février 2014
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiant master

    Informations forums :
    Inscription : Février 2014
    Messages : 167
    Par défaut
    merci pour l'explication , merci pour la documentation. Mais vous n'avez pas me répondu sur ma principale question.

    peut être elle n'était pas claire, d'autre façon:

    si je met chaque fenêtre dans une classe, comment je peux lancer la deuxième fenêtre à partir de la 1ere?
    est ce que c'est faisable de programmer chaque fenêtre avec ses widgets en une classe?

    c'est à cause ce lien que j'ai posé cette question: http://sebsauvage.net/python/gui/index_fr.html


    remarque: j'utilise la biblio Tix pour le widget ComboBox.

    cordialement

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par noramokh Voir le message
    merci pour l'explication , merci pour la documentation. Mais vous n'avez pas me répondu sur ma principale question.

    peut être elle n'était pas claire, d'autre façon:

    si je met chaque fenêtre dans une classe, comment je peux lancer la deuxième fenêtre à partir de la 1ere?
    Oui, c'est possible.

    La fenêtre principale est une classe héritée de Tkinter.Tk et la seconde fenêtre est une classe héritée de Tkinter.Toplevel (avec le mode transient, si nécessaire).

    est ce que c'est faisable de programmer chaque fenêtre avec ses widgets en une classe?
    Oui, c'est faisable.

    remarque: j'utilise la biblio Tix pour le widget ComboBox.

    cordialement
    Je me doute bien que vous avez une très bonne raison d'utiliser Tix pour ses widgets.

    Mais j'insiste : tant que vous ne maîtriserez pas d'abord Tkinter, vous allez vous embourber inutilement avec Tix.

    Commencez par bien vous documenter sur la librairie Tkinter, vous allez voir : c'est volumineux et il y a déjà fort à faire.

    Ensuite, je dis bien ENSUITE seulement, vous passerez à Tix (quand vous aurez bien assimilé le fonctionnement de Tkinter).

    Maintenant, si vous préférez tout résoudre en même temps, je ne vous serais d'aucun secours.

    Bon courage.

    @+.

  5. #5
    Membre confirmé
    Femme Profil pro
    étudiant master
    Inscrit en
    Février 2014
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiant master

    Informations forums :
    Inscription : Février 2014
    Messages : 167
    Par défaut
    concernant Tix, vous avez raison, normalement on peut créer combobox avec Tkinter en installant le module pmw.
    mais lors de l'exécution du code, il m'affiche une erreur pourtant j'ai installé ce module.

    merci infiniment

    cordialement

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par noramokh Voir le message
    concernant Tix, vous avez raison, normalement on peut créer combobox avec Tkinter en installant le module pmw.
    mais lors de l'exécution du code, il m'affiche une erreur pourtant j'ai installé ce module.

    merci infiniment

    cordialement
    La question n'est pas de savoir s'il faut utiliser Tix ou pas. La question est : quand dois-je utiliser Tix ?

    Réponse : une fois que j'aurai assimilé Tkinter correctement en premier.

    Merci de cliquer sur "Résolu" si vos problèmes ont trouvé réponse ou lorsque vous souhaiterez clore ce fil de discussion.

    @+.

  7. #7
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 303
    Par défaut
    Regarde ici, tu as un exemple de création de fenêtres multiples:

    http://python.developpez.com/cours/a...=page_16#L16-E

  8. #8
    Membre confirmé
    Femme Profil pro
    étudiant master
    Inscrit en
    Février 2014
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiant master

    Informations forums :
    Inscription : Février 2014
    Messages : 167
    Par défaut
    merci beaucoup VinsS, c'est exactement ce que je cherche.

    merci tarball69.

    noramokh

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

Discussions similaires

  1. [PHP 5.3] [POO] Création des variables d'une classe
    Par pierrot10 dans le forum Langage
    Réponses: 3
    Dernier message: 13/05/2010, 00h43
  2. Réponses: 5
    Dernier message: 12/08/2008, 16h49
  3. création des DDLs par une boucle for
    Par sophiesophie dans le forum C#
    Réponses: 27
    Dernier message: 29/05/2008, 11h29
  4. Odre de création des fenêtres et requêtes
    Par t.n.b.g dans le forum WinDev
    Réponses: 4
    Dernier message: 26/05/2008, 11h55
  5. Ordre de création des bases pour une migration
    Par D.Mounir dans le forum Oracle
    Réponses: 1
    Dernier message: 10/09/2007, 08h58

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