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 :

Écraser un canvas (Tkinter)


Sujet :

Tkinter Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 22
    Points : 13
    Points
    13
    Par défaut Écraser un canvas (Tkinter)
    Bonjour, je débute sur python et mon objectif est de développer une application assez simple sous tkinter.

    Je rencontre quelques problèmes et j'espère pouvoir les résoudre avec vous
    Mon problème est le suivant : lorsque je clique sur un bouton, je récupère une valeur depuis une spinbox(1,2,3,...) et en fonction de la valeur j'affiche un canvas (un carré). le premier clique fonctionne (par exempe 1=carrée rouge) mais lorsque je décide de cliquer à nouveau, un deuxième canvas s'affiche au dessus du premier, comme si je les empilais.. Or je voudrai effacer le premier pour le remplacer par le deuxième.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def Show(self):
            choix = self.spinbox.get()
            if choix == "1":
     
                canvas = Canvas(self.frameRight, height=100, width=300,bg="red")
                canvas.create_line(0,0,100,300)
                canvas.pack()
     
            if choix == "2":
     
                canvas = Canvas(self.frameRight, height=100, width=300,bg="blue")
                canvas.create_line(0,0,100,300)
                canvas.pack()

  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,

    Le canvas, une fois créé peut être modifié: canvas.delete('all') pour détruire tous les items qu'il contient, canvas.configure(bg='color') pour en changer les attributs...
    C'est quand même plus propre de défaire pour refaire. Au cas où, .destroy() va détruire le widget.

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

  3. #3
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Citation Envoyé par DimKlen Voir le message
    Bonjour, je débute sur python et mon objectif est de développer une application assez simple sous tkinter.

    Je rencontre quelques problèmes et j'espère pouvoir les résoudre avec vous
    Mon problème est le suivant : lorsque je clique sur un bouton, je récupère une valeur depuis une spinbox(1,2,3,...) et en fonction de la valeur j'affiche un canvas (un carré). le premier clique fonctionne (par exempe 1=carrée rouge) mais lorsque je décide de cliquer à nouveau, un deuxième canvas s'affiche au dessus du premier, comme si je les empilais.. Or je voudrai effacer le premier pour le remplacer par le deuxième.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def Show(self):
            choix = self.spinbox.get()
            if choix == "1":
     
                canvas = Canvas(self.frameRight, height=100, width=300,bg="red")
                canvas.create_line(0,0,100,300)
                canvas.pack()
     
            if choix == "2":
     
                canvas = Canvas(self.frameRight, height=100, width=300,bg="blue")
                canvas.create_line(0,0,100,300)
                canvas.pack()
    Bonsoir,
    Deux possibilités:
    - ne pas redessiner le "canvas" et se contenter de modifier la couleur…
    - effacer l'ancien "canvas" avant d'en dessiner un nouveau.

    Clodion

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Super cela fonctionne !
    Je continue à développer et je tombe encore sur un léger problème. Je m'explique, Je souhaite créer dynamiquement des Entry en fonction du nombre d'utilisateur choisi (2 utilisateurs choisis = 2 Entry). Mon problème est : comment faire pour récupérer le contenu de chaque entry sachant qu'ils sont tous déclarés avec le même nom de variable ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    i=0
            for i in range(conver):
                TLabel = Label(top,text="User "+str(i))
                TEntry = Entry(top,textvariable=name)
                TLabel.grid(row=i)
                TEntry.grid(row=i,column=1)
    Je viens d'éditer mon message, du coup j'ai utiliser des listes pour stocker mes widget
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i in range(conver):
                self.labels.append(Label(top,text="User "+str(i)))       
                self.entry.append(Entry(top,textvariable=name))
                self.labels[i].grid(row=i)
                self.entry[i].grid(row=i,column=1)
    Le problème maintenant est que lorsque j'essaye de taper quelque chose dans une des entry, toutes mes entry écrivent la même chose. Elles sont liées alors que j'aimerais qu'elles soient distinctes

  5. #5
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Citation Envoyé par DimKlen Voir le message
    Je viens d'éditer mon message, du coup j'ai utiliser des listes pour stocker mes widget
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i in range(conver):
                self.labels.append(Label(top,text="User "+str(i)))       
                self.entry.append(Entry(top,textvariable=name))
                self.labels[i].grid(row=i)
                self.entry[i].grid(row=i,column=1)
    Le problème maintenant est que lorsque j'essaye de taper quelque chose dans une des entry, toutes mes entry écrivent la même chose. Elles sont liées alors que j'aimerais qu'elles soient distinctes
    Bonsoir,
    Quelle variable est utilisée en tant que "textvariable"?
    -> ici, manifestement, c'est la variable "name".
    D'où vient-elle? Est-ce bien une "StringVar"?
    En tous cas, avec la même variable dans les différentes instances, il y a un gros problème!

    Clodion

  6. #6
    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,

    Citation Envoyé par DimKlen Voir le message
    Mon problème est : comment faire pour récupérer le contenu de chaque entry sachant qu'ils sont tous déclarés avec le même nom de variable ?
    Pourquoi, dans ce cas, associer vos entry à une Variable Tk, ce n'est qu'optionel...
    Et si vous voulez utilisez cette option, pourquoi les associer à la même Variable Tk?

    Le code ne fait que ce que vous lui demandez de faire...

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

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Oui il s'agit bien d'une StringVar().
    Que me proposes-tu ?

    Par variable Tk, tu veux parler du self ? Je suis vraiment nouveau et je ne comprend pas tout ce que je fais en réalité. Je devrais donc créer une variable différente pour chaque entry ? Je ne peux pas mettre toutes ces données dans un seul tableau et ensuite je les récupère avec l'indice?

  8. #8
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Citation Envoyé par DimKlen Voir le message
    Oui il s'agit bien d'une StringVar().
    Que me proposes-tu ?
    Bonsoir,
    Ainsi qu'écrit plus haut, il faut plusieurs variables…
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import tkinter as tk
     
    fen = tk.Tk()
     
    ent = []
    nom = []
    for x in range(2):
        nom.append(tk.StringVar())
        ent.append(tk.Entry(textvariable=nom[x]))
        ent[x].pack()
    fen.mainloop()
    En remplaçant "nom[x]" par "nom", vous retrouvez votre problème.

    Clodion

    PS: StringVar est une variable tkinter (différente d'une variable Python)

  9. #9
    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 DimKlen Voir le message
    Oui il s'agit bien d'une StringVar().
    Que me proposes-tu ?
    Vous ouvrez votre documentation et vous regardez comment s'utilise le widget Entry.
    Lorsque vous ne comprenez pas trop ce que çà raconte, vous essayez de voir à la console Python ou via un petit bout de code ce que çà fait et vous essayez de voir comment lui faire faire ce que vous en attendez.
    note: ce n'est pas en montrant un petit bout de code qu'on peut comprendre ce que vous voulez en faire. Pas facile de proposer quoi que ce soit dans ces conditions. Pour pasticher sur le code de Clodion, vous pourriez écrire (sans StringVar):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import tkinter as tk
     
    entries = []
    for x in range(2):
        w = tk.Entry()
        w.pack()
        entries.append(w)
     
    tk.mainloop()
    mais c'est "useless" (car çà ne dit rien sur quoi en faire après).

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

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Merci, j'avance de façon efficace grâce à vous !
    Oui je comprends bien que cela doit être difficile pour vous de comprendre ce que je souhaite faire avec les légers bout de codes que je vous montre... Je vais corriger ça.

    J'aimerais maintenant organiser mes widget sur mes frames. En effet, j'ai 2 frames (une gauche et une droite)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    frameLeft= Frame(master,borderwidth=2,relief=GROOVE)
     
     
            frameRight=Frame(master,borderwidth=2,relief=GROOVE)
    et en y plaçant mes widgets, je n'arrive pas à occuper toute ma fenêtre : Nom : fenetregauche.jpg
Affichages : 1515
Taille : 19,9 Ko
    Comme vous le voyez, tous mes widgets sont centrés et rapprochés et mon but serait de pouvoir les espacer, rendre ma fenêtre plus jolie et éviter le vide !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     ## POSITION ##
            self.status.pack(side=BOTTOM,fill=X)
            self.frameLeft.pack(side=LEFT)
            self.frameRight.pack(side=RIGHT)
            self.pLabel.grid(row=0)
            self.spinbox.grid(row=0,column=1)
            self.ButtonNom.grid(row=1) 
            self.mlabel.grid(row=2,column=0)
            self.mEntry.grid(row=2,column=1,sticky='w')
            self.ButtonRep.grid(row=3)
            self.ButtonShow.grid(row=3,column=1)
            self.ButtonStart.grid(row=4,column=0,sticky='w')
            self.ButtonStop.grid(row=4,column=1) 
            self.canvas.pack()
    jai essayé les paramètres rowspan/columnspan mais cela ne me sert pas à grand chose, ou alors je n'arrive pas à les utiliser... Avez-vous quelque chose pour m'aider à mieux organiser ma fenêtre ?
    MErci

  11. #11
    Membre éprouvé
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Points : 926
    Points
    926
    Par défaut
    Citation Envoyé par DimKlen Voir le message
    Oui je comprends bien que cela doit être difficile pour vous de comprendre ce que je souhaite faire avec les légers bout de codes que je vous montre... Je vais corriger ça.
    Bonsoir,
    Malheureusement, ce n'est pas corrigé…
    Ainsi que le disait wiztricks, on ne peut pas comprendre ce qui est recherché car il n'y a pas d'indication quand au parent de chaque widget. Et, de surcroît, la photo ne semble pas entière.
    Il semble que "pack" et "grid" soient utilisés sans discernement.
    Il devrait, au moins être possible, de montrer un exemple minimaliste afin d'avoir de l'aide.

    Clodion

  12. #12
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Bonjour Clodion,

    Tous les widget que tu vois sur mon code appartiennent à la "FrameLeft" sauf le canvas qui occupe entièrement la "FrameRight". C'est pour cela que j'ai coupé mon interface en 2 puisque la FrameRight ne me pose pas problème. J'utilise grid() pour placer mes widget précise et j'ai utilisé pack() pour le canvas puisque sa place sur la fenêtre de droite n'a pas besoin d'être précise.

    Mon but serait d'espacer mes widgets entre eux afin qu'ils occupent toute la fenêtre, Sinon je rajoute des label vide

  13. #13
    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 DimKlen Voir le message
    Mon but serait d'espacer mes widgets entre eux afin qu'ils occupent toute la fenêtre, Sinon je rajoute des label vide
    Si vous ne postez pas un code permettant de reproduire un peu quelque chose, difficile de répondre.

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

  14. #14
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Alors voici ce que je fais pour le moment :
    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
    class Dim:
    def __init__(self, master):
            ### Frame ###
            self.frameLeft= Frame(master)       
            self.frameRight=Frame(master,borderwidth=2,relief=GROOVE)
            self.labelFrameLeftUser=LabelFrame(self.frameLeft,text="Utilisateur")
            self.labelFrameLeftRep=LabelFrame(self.frameLeft,text="Repertoire de sortie")
     
            ### Button ###
            self.ButtonStart = Button(self.frameLeft, text="Start", command = self.Start)
            self.ButtonStop = Button(self.frameLeft, text="Stop", command = self.Stop)   
            self.ButtonRep = Button(self.labelFrameLeftRep, text="Choisir rep...", command = self.repertoire) 
            self.ButtonNom = Button(self.labelFrameLeftUser, text="Nommer les utilisateurs", command = self.Nommage)
     
           ### Entry Box & Label ###
            self.pLabel = Label(self.labelFrameLeftUser,text="Nombre de personne")
            self.mlabel = Label(self.labelFrameLeftRep,text ="Nom")
            self.mEntry = Entry(self.labelFrameLeftRep,textvariable=self.VarText)
     
            ### SpinBox ###
            self.spinbox = Spinbox(self.labelFrameLeftUser,from_=2, to=6,state=NORMAL,command = self.Show)
     
            ### ListBox ###
            self.listUser=Listbox(self.labelFrameLeftUser)
     
            ## POSITION ##
            self.frameLeft.pack(side=LEFT)
            self.frameRight.pack(side=RIGHT)
            self.labelFrameLeftUser.grid()
            self.labelFrameLeftRep.grid()
            self.pLabel.grid(row=0)
            self.spinbox.grid(row=0,column=1)
            self.ButtonNom.grid(row=1,sticky='N') 
            self.listUser.grid(row=1,column=1)
            self.mlabel.grid(row=2,column=0)
            self.mEntry.grid(row=2,column=1,sticky='w')
            self.ButtonRep.grid(row=3)
            #self.ButtonShow.grid(row=3,column=1)
            self.ButtonStart.grid(row=4,column=0,sticky='w')
            self.ButtonStop.grid(row=4,column=1) 
     
     
    root = Tk()
    root.geometry("800x400")
    root.resizable(width=False, height=False)
    D = Dim(root)
    root.mainloop()
    Voilà mes déclarations et le positionnement de chaque widget uniquement sur la fenêtre de gauche. La fenêtre de droite ne me posant pas de problème, cela ne sert à rien que je vous la montre. Donc voici ce que j'obtiens : Nom : fegau.jpg
Affichages : 1631
Taille : 25,4 Ko

  15. #15
    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,

    Citation Envoyé par DimKlen Voir le message
    Voilà mes déclarations et le positionnement de chaque widget uniquement sur la fenêtre de gauche. La fenêtre de droite ne me posant pas de problème, cela ne sert à rien que je vous la montre. Donc voici ce que j'obtiens
    Un code fonctionnel est un code qu'on peut lancer sans avoir à le modifier pour qu'il fonctionne.

    Remisez cette partie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            self.pLabel.grid(row=0)
            self.spinbox.grid(row=0,column=1)
            self.ButtonNom.grid(row=1,sticky='N') 
            self.listUser.grid(row=1,column=1)
            self.mlabel.grid(row=2,column=0)
            self.mEntry.grid(row=2,column=1,sticky='w')
            self.ButtonRep.grid(row=3)
            #self.ButtonShow.grid(row=3,column=1)
            self.ButtonStart.grid(row=4,column=0,sticky='w')
            self.ButtonStop.grid(row=4,column=1)
    Les différents widgets étant dans des "Frame" différents, les row/column s'appliquent à priori à chacune des Frame et non globalement. Dit autrement, le code semble avoir l'intention de placer les widgets dans une seule grille alors qu'en fait ils sont répartis dans "3 grilles"... Pas très cohérent et pas trop lisible!
    Si vous voulez vous y retrouver, construisez vos 3 Frame (avec ce qu'elles contiennent) indépendamment.

    Après, pour autant que la question posée soit claire (pour moi), j'ai l'impression que vous voulez que les widgets se distribuent sur la place disponible. Pour çà, il faut le demander!
    Avec .pack, vous pouvez demander expand=1, çà donne:
    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
    import tkinter as tk
    from tkinter.constants import *
     
    def create_widget(master=None):
        def create_inner(master, count, text):
            frame = tk.LabelFrame(master, text=text)
            for x in range(count):
                w = tk.Label(frame, text='label %d' % x)
                w.pack()
            return frame
        # global frame.
        frame = tk.Frame(master, bg='grey')
        for x, count in enumerate([3, 2, 4]):
            w = create_inner(frame, count, text='inner %d' % x)
            w.pack(expand=1)
        return frame
     
    root = tk.Tk()
    root.geometry("800x400")
    root.configure(bg='green')
    root.resizable(width=False, height=False)
     
    w = create_widget(root)
    w.pack(fill=Y, expand=1)
    tk.mainloop()
    Pas besoin de poster votre "vrai code" pour travailler la dessus...
    note: Si vous créez une frame avec des widgets dedans, la disposition à l'intérieur de celle-ci sera de sa responsabilité. Par contre, sa disposition dans le widget parent est de la responsabilité du "parent". Vous pouvez le faire autrement si çà vous chante, mais si lorsque vous commencez à avoir plein de widgets dans plein de Frame, un peu de rigueur s'impose.

    Je vous laisse chercher l'équivalent d'expand pour "grid".

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

Discussions similaires

  1. [Python 3.X] Deplacer Canvas Tkinter
    Par Cysou333 dans le forum Tkinter
    Réponses: 1
    Dernier message: 11/07/2015, 23h01
  2. Canvas Tkinter image introuvable
    Par Displayed dans le forum Général Python
    Réponses: 4
    Dernier message: 16/09/2014, 01h09
  3. Effets 'néon' dans un Canvas (Tkinter only svp)
    Par PauseKawa dans le forum Tkinter
    Réponses: 3
    Dernier message: 17/12/2011, 20h56
  4. [Tkinter].... Canvas: effacer un objet
    Par airod dans le forum Tkinter
    Réponses: 1
    Dernier message: 23/01/2006, 12h55
  5. [Tkinter] Canvas -> superposition et z-index ?
    Par Olivier_ dans le forum Tkinter
    Réponses: 3
    Dernier message: 02/12/2005, 09h05

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