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 :

centrer le contenu d'un LabelFrame


Sujet :

Tkinter Python

  1. #1
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Points : 1 351
    Points
    1 351
    Par défaut centrer le contenu d'un LabelFrame
    Salut,

    J'utilise le Tkinter.LabelFrame. J'aimerais qu'il ait un comportement qui me parait normal mais je n'arrive pas à le programmer... je voudrais que le LabelFrame prenne toute la largeur et que ce qu'il contient soit centré en milieu. frame 1 prend bien toute la largeur, mais le contenu est placé à gauche. frame 2 est centré, mais ne prend pas toute la largeur. Si quelqu'un a une solution, je suis preneur.

    A+

    Pfeuh

    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
    import Tkinter as gui
     
    win = gui.Tk()
    frm0 = gui.LabelFrame(win, text='frame 0')
    frm0.grid()
    gui.Entry(frm0, width=80).grid()
    frm1 = gui.LabelFrame(win, text='frame 1')
    frm1.grid(sticky='wens')
    gui.Button(frm1, text='button 1').grid(column=0, row=0)
    gui.Button(frm1, text='button 2').grid(column=1, row=0)
    frm2 = gui.LabelFrame(win, text='frame 2')
    frm2.grid()
    gui.Button(frm2, text='button 3').grid(column=0, row=0)
    gui.Button(frm2, text='button 4').grid(column=1, row=0)
    win.mainloop()

  2. #2
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    labelanchor ?
    Avez vous tester .pack() ?

  3. #3
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Points : 1 351
    Points
    1 351
    Par défaut
    Citation Envoyé par PauseKawa Voir le message
    labelanchor ?
    Avez vous tester .pack() ?
    Oui, pas mieux... Je pense que le problème vient du grid(sticky='wens') ou du
    pack(fill=gui.X) appliqué au LabelFrame, mais je ne vois pas comment contourner...

    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
    import Tkinter as gui
     
    win = gui.Tk()
    frm0 = gui.LabelFrame(win, text='frame 0')
    frm0.pack()
    gui.Entry(frm0, width=80).pack()
    frm1 = gui.LabelFrame(win, text='frame 1')
    frm1.pack(fill=gui.X)
    gui.Button(frm1, text='button 1').pack(side=gui.LEFT)
    gui.Button(frm1, text='button 2').pack(side=gui.LEFT)
    frm2 = gui.LabelFrame(win, text='frame 2')
    frm2.pack()
    gui.Button(frm2, text='button 3').pack(side=gui.LEFT)
    gui.Button(frm2, text='button 4').pack(side=gui.LEFT)
     
    win.mainloop()

  4. #4
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Points : 1 351
    Points
    1 351
    Par défaut
    J'ai cru trouver une solution en mettant plusieurs widgets dans la même cellule, mais c'est moche et c'est de toute façon du bricolage...

    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
    import Tkinter as gui
     
    win = gui.Tk()
     
    frm0 = gui.LabelFrame(win, text='frame 0')
    frm0.grid(column=0, row=0)
    gui.Entry(frm0, width=80).grid()
     
    frm1 = gui.LabelFrame(win, text='frame 1')
    frm1.grid(column=0, row=1, sticky='we')
    gui.Button(frm1, text='button 1').grid(column=0, row=0)
    gui.Button(frm1, text='button 2').grid(column=1, row=0)
     
    frm2 = gui.LabelFrame(win, text='frame 2')
    frm2.grid(column=0, row=2, sticky='ewns')
    frm3 = gui.Frame(win, pady=10)
    frm3.grid(column=0, row=2)
    gui.Button(frm3, text='button 3').grid(column=0, row=0)
    gui.Button(frm3, text='button 4').grid(column=1, row=0)
     
    win.mainloop()

  5. #5
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Solution bancale : Utiliser un Frame

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    f = gui.Frame(frm1)
    gui.Button(f, text='button 1').grid(column=0, row=0)
    gui.Button(f, text='button 2').grid(column=1, row=0)
    f.pack()

  6. #6
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Points : 1 351
    Points
    1 351
    Par défaut
    Euh... Ça marche exactement comme je le voulais! Bon, ce n'est pas très orthodoxe je crois de mélanger les grid et les pack, mais en tout cas ça marche bien, merci beaucoup.

    A+,

    Pfeuh

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import Tkinter as gui
     
    win = gui.Tk()
    frm0 = gui.LabelFrame(win, text='frame 0')
    frm0.grid(column=0, row=0)
    gui.Entry(frm0, width=80).grid()
    frm1 = gui.LabelFrame(win, text='frame 1')
    frm1.grid(column=0, row=1, sticky='we')
    f = gui.Frame(frm1)
    gui.Button(f, text='button 1').grid(column=0, row=0)
    gui.Button(f, text='button 2').grid(column=1, row=0)
    f.pack()
    win.mainloop()

  7. #7
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Citation Envoyé par pfeuh Voir le message
    Euh... Ça marche exactement comme je le voulais! Bon, ce n'est pas très orthodoxe je crois de mélanger les grid et les pack, mais en tout cas ça marche bien, merci beaucoup.
    Il est dit de ne pas mélanger les géométry managers pour un même niveau de Widget (En fait cela plante l'interpréteur Tcl).
    Il n'est pas interdit d'utiliser le géométry manager le plus adapté à un niveau donné.

    @+

    Ps: Pour l'orthodoxe c'est sans doute pas avec moi que vous allez l'avoir (sauf si wiztricks ou dividee passent par là pour me taper sur le doigts... )

  8. #8
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    A noter qu'il est peut être dommage de ne pas avoir un -justify sur ce Widget.
    Mais bon, c'est du pur tk.call, donc rien a faire sauf de revoir Tcl/Tk.

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

Discussions similaires

  1. [CSS] centrer le contenu de <table>
    Par H-bil dans le forum Mise en page CSS
    Réponses: 14
    Dernier message: 10/06/2006, 16h44
  2. [VB6]Comment centrer le contenu d'une cellule
    Par zackrel dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 19/05/2006, 20h02
  3. [HTML] Centrer le contenu d'une zone de texte
    Par beegees dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 16/03/2006, 00h34
  4. [HTML] Centrer le contenu d'une zone de texte
    Par beegees dans le forum Balisage (X)HTML et validation W3C
    Réponses: 13
    Dernier message: 15/03/2006, 17h10
  5. [CSS] Centrer le contenu d'une Div
    Par bolo dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 09/03/2006, 19h18

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