Partage
  • Partager sur Facebook
  • Partager sur Twitter

Insérer un frame pour regrouper des widgets par catégories

Python 2.6

    15 août 2010 à 19:03:10

    Bonjour tout le monde,

    J'utilise Python 2.6 avec Wing IDE personnal.

    Je dois créer une interface graphique qui ressemblera à celle-ci :

    Image utilisateur

    J'aimerais créer un cadre qui regrouperait différents widgets.

    C'est plus "esthétique" que fonctionnel (je pense).

    J'ai tenté ceci :

    self.separator = Frame(height=2, bd=1, relief=SUNKEN)
            self.separator.pack(fill=X, padx=5, pady=5)
    


    Sans succès.

    Quand je lance l'application, le form ne s'affiche pas.

    Je me demandais donc comment afficher plusieurs widgets dans un frame et y mettre un titre à ce widget (sur l'image c'est "Experiment")


    Voici mon code :

    from Tkinter import *
    
    class Simple_app_tk(Tk):
        def __init__(self, parent):
            Tk.__init__(self, parent)
            self.parent=parent
        def initialize(self):
            self.grid
            self.labelMicro = Label(self.parent, text="MIC 1", font=("Helvetica", 20)) #attention : text est une propriété de Label mais Text (grand T) est une classe
            self.labelMicro.grid(column=0, row=0, sticky='EW') #placement d'une zone de texte à la colonne 0 et à la ligne 0
            
    
            self.separator = Frame(height=2, bd=1, relief=SUNKEN)
            self.separator.pack(fill=X, padx=5, pady=5)
    
            
    
    
    if __name__=="__main__":
        app=Simple_app_tk(None)
        app.title('Ma fenetre')
        app.initialize()
        app.mainloop()
    


    Tant qu'on y est, savez-vous comment s'appelle le widget avec les deux flèches et la valeur numérique ? (delay(s)) ?

    Merci d'avance pour votre aide.

    beegees
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      15 août 2010 à 19:49:03

      Tu ne devrais pas l'attaquer en utilisant la POO.

      Sais-tu ce qu'est une frame


      Citation

      self.separator.pack



      La méthode pack ne peut pas être utilisé car tu utilises déjà la méthode grid pour placer tes widgets.

      Tu veux créer une fenêtre trop complexe pour un début, je te conseille de commencer plus simple


      • Partager sur Facebook
      • Partager sur Twitter
        15 août 2010 à 20:01:42

        Salut Fred,

        Merci pour ta réponse.

        Oui, une frame permet de grouper des éléments. On peut aussi utiliser un index pour le groupement et donc avoir moins de code.

        En fait, j'ai des bonnes notions de VB, PHP, C... mais je suis vraiment débutant en Python et j'ai d'énormes lacunes en POO.

        Citation : Fred

        La méthode pack ne peut pas être utilisé car tu utilises déjà la méthode grid pour placer tes widgets.



        Bon à savoir, merci.

        Pack est donc une méthode de positionnement ? je vais aller voir sur google.

        Citation : Fred

        Tu veux créer une fenêtre trop complexe pour un début, je te conseille de commencer plus simple



        Je n'ai pas trop le choix, on m'a demandé de créer un programme et j'avoue que j'en profite pour apprendre Python et la POO.

        C'est mieux d'apprendre un langage quand on a un exercice concret.

        Merci encore pour ton aide.

        beegees
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          15 août 2010 à 20:10:10

          Citation

          En fait, j'ai des bonnes notions de VB, PHP, C... mais je suis vraiment débutant en Python et j'ai d'énormes lacunes en POO.



          Raison de plus pour découvrir Tkinter sans POO :)

          Ca te fait 2 difficultés au lieu d'une seule
          • Partager sur Facebook
          • Partager sur Twitter
            15 août 2010 à 20:13:35

            Re,

            Je dois tout recommencer alors ?

            Donc, du code séquentiel suffirait ?

            Mon idée, vue que je devais créer 3 formulaires (quasi) identiques, je pensais le faire en POO.

            Mais une simple fonction avec paramètres pourrait aussi fonctionner.

            Qu'en penses-tu ?

            Merci pour ton dévouement.

            beegees
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              15 août 2010 à 20:22:16

              Citation

              Mon idée, vue que je devais créer 3 formulaires (quasi) identiques, je pensais le faire en POO.



              On s'en fou de cela, qui puis-est je ne le vois pas de la même façon :)

              Je vois 2 frames (fenêtres) soit 2 colonnes.

              Il te faudra faire du fusionnage comme par exemple le label où est écrit "2 days ..." en utilisant l'option columnspan de la méthode grid.

              Les mots comme experiment faudra sûrement le faire avec ttk et labelframe (enfin je crois si mes souvenirs sont bons)

              Bon courage
              • Partager sur Facebook
              • Partager sur Twitter
                17 août 2010 à 20:48:51

                Bonsoir,

                Il n'y a pas besoin de beaucoup de connaissance en POO pour un tel projet, sauf si tu comptes faire des classes dérivées.

                Tu as juste besoin de connaitre les notions de widget maître et widget esclave.
                Après tu peux tout faire avec des fonctions si tu veux, mais ça donnera un code pas très intuitif par la suite :-°

                Puis comme tu l'as dit, si tes formulaires sont quasi-identiques autant faire ça avec une fonction qui s'occupe d'adapter le formulaire en fonction des paramètres donnés. C'est quand même bien plus pratique de pas avoir à taper 3 fois la même chose ;)

                Bonne continuation.
                • Partager sur Facebook
                • Partager sur Twitter

                Insérer un frame pour regrouper des widgets par catégories

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown