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 :

pb de positionnements


Sujet :

Tkinter Python

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2017
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2017
    Messages : 141
    Points : 65
    Points
    65
    Par défaut pb de positionnements
    Bonjour,

    Je n'arrive pas a positionner mes widgets correctement :

    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
    from tkinter import *
    #   ____________________________________________________________________________________________________________________
    # Création de l'instance Tk
    fen2 =Tk()
    #   ____________________________________________________________________________________________________________________
    #  MAIN : Lancement du programme Principal
    #   Création fenêtre principale
    fen2.geometry('500x200')
    #   ____________________________________________________________________________________________________________________
    #   CREATION OBJETS
    #   Créations - Frame
    objFrame1 = LabelFrame(fen2, text="Résultat", padx=20, pady=5)
    #   fenêtre RESULTAT
    #   Créa objet Label
    objLabel5 = Label(objFrame1 ,height=1 ,width=20, text="Adresse mail", padx=5)
    objLabel6 = Label(objFrame1 ,height=1 ,width=20, text="Agence", padx=5)
    #   Créa objet Label/Objet
    objMailNom = Label(objFrame1 ,height=1 ,width=20, relief=SUNKEN, padx=5)
    objMailNomBout =Button(objFrame1, bg ="Red", padx=5)
    objAgence = Label(objFrame1 ,height=1 ,width=20, relief=SUNKEN, padx=5)
    objMailAgenceBout =Button(objFrame1, bg ="Red", padx=5)
    #   ____________________________________________________________________________________________________________________
    #   positionnement frame
    objFrame1.pack(fill="both", expand="yes", padx=5, pady=5)   # fill both : extension a yes donc both sinon que sur x ou y
    #   Position des objets Ligne 3
    objLabel5.grid(row=1, column=1)
    objMailNom.grid(row=2, column=1)
    objMailNomBout.grid(row=2, column=2)
    objLabel6.grid(row=1, column=4)
    objAgence.grid(row=2, column=4)
    objMailAgenceBout.grid(row=2, column=5, sticky='E')
    #   ____________________________________________________________________________________________________________________
    fen2.mainloop()
    Ci joint une image comme je la voudrais :
    - Les 2 boutons rouge sont trop large
    - Ils ne sont pas à la même hauteur que le les labels
    - Ils sont "collés" aux labels

    je ne trouve pas comment faire
    Images attachées Images attachées  

  2. #2
    Membre confirmé

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Points : 503
    Points
    503
    Billets dans le blog
    1
    Par défaut
    Salut.

    Pour les boutons, c'est parce qu'il y a un pady par défaut, en le mettant à 0, c'est ok.
    Il faut aussi faire la différence entre les arguments pad* d'un widget et ceux du gestionnaire de positionnement.

    Exemple pour positionner comme tu le demandes, note que j'ai enlevé les dimensions des labels afin que ceux-ci s'étirent lors du redimensionnement de la fenêtre.

    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
    import tkinter as tk
     
    fen = tk.Tk()
    fen.geometry('500x200')
    fen.columnconfigure(0, weight=1)
     
    frame_resultat = tk.LabelFrame(fen, text="Résultat", padx=20, pady=15)
    frame_resultat.grid(sticky=tk.NSEW, padx=15)
     
    for i in range(4) :
        # 1 pour label, 0 pour button
        frame_resultat.columnconfigure(i, weight=1-i%2)
     
    # Mail
    label_mail = tk.Label(frame_resultat, height=1, text="Adresse mail")
    label_mail.grid(row=0, column=0, columnspan=2, sticky=tk.W, padx=15)
     
    info_mail = tk.Label(frame_resultat, height=1, relief=tk.SUNKEN, padx=5)
    info_mail.grid(row=1, column=0, sticky=tk.EW)
     
    bout_mail = tk.Button(frame_resultat, height=1, bg ="Red", padx=5, pady=0)
    bout_mail.grid(row=1, column=1, padx=(5, 25))
     
    # Agence
    label_agence = tk.Label(frame_resultat, height=1, text="Agence")
    label_agence.grid(row=0, column=2, columnspan=2, sticky=tk.W, padx=15)
     
    info_agence = tk.Label(frame_resultat, height=1, relief=tk.SUNKEN, padx=5)
    info_agence.grid(row=1, column=2, sticky=tk.EW)
     
    bout_agence = tk.Button(frame_resultat, bg ="Red", padx=5, pady=0)
    bout_agence.grid(row=1, column=3, padx=5)
     
    fen.mainloop()

  3. #3
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2017
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2017
    Messages : 141
    Points : 65
    Points
    65
    Par défaut
    Bonjour Bistouille,

    Merci ça fonctionne, mais je n'ai pas bien compris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    bout_agence = tk.Button(frame_resultat, bg ="Red", padx=5, pady=0)
    bout_agence.grid(row=1, column=3, padx=5)

    padx gère l'espacement horizontal extérieur du widget, pourquoi doit-on le spécifier 2 fois sur le même objet ?
    Surtout que le 1er :
    [CODE]bout_agence = tk.Button(frame_resultat, bg ="Red", padx=5, pady=0)[CODE]

    modifie sa taille et non pas l'espace autour !

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 292
    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 292
    Points : 36 788
    Points
    36 788
    Par défaut
    Citation Envoyé par Ragus1970 Voir le message
    padx gère l'espacement horizontal extérieur du widget, pourquoi doit-on le spécifier 2 fois sur le même objet ?
    Le padx à la création du widget ajoute "à l'intérieur" et contribue aux dimensions que le grid/pack manager devra gérer. Le padx côté grid ajoute de l'espace à l'extérieur. D'ailleurs côté grid/pack vous avez padx|y et ipadx|y pour différencier les 2.

    - W

  5. #5
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2017
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2017
    Messages : 141
    Points : 65
    Points
    65
    Par défaut
    Bonjour,

    D'accord, je comprend mieux, merci.

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

Discussions similaires

  1. Déplacement ou positionnement d'une fenêtre
    Par agl dans le forum C++Builder
    Réponses: 3
    Dernier message: 10/11/2003, 09h29
  2. positionnement curseur et code ansi
    Par coach dans le forum C
    Réponses: 7
    Dernier message: 03/11/2003, 23h32
  3. LinCVS - Comment positionner CVSROOT ?
    Par sequentaire dans le forum Réseau
    Réponses: 3
    Dernier message: 10/07/2003, 06h53
  4. RichEdit tjs positionner le curseur en bas du texte
    Par microseb dans le forum C++Builder
    Réponses: 2
    Dernier message: 16/05/2003, 17h48
  5. [TSynMemo] Positionnement par ligne et colonne
    Par Mercilius dans le forum Composants VCL
    Réponses: 9
    Dernier message: 16/04/2003, 16h22

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