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 :

Encore un problème de positionnement


Sujet :

Tkinter Python

  1. #1
    Membre actif
    Inscrit en
    Novembre 2003
    Messages
    543
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 543
    Points : 239
    Points
    239
    Par défaut Encore un problème de positionnement
    Voici mon problème : j'ai donc créé un conteneur afin d'y mettre 4 boutons.
    Je souhaiterais que ces boutons soient empilés, les uns au dessus des autres, avec un petit espace entre chacun, mais, AU MILIEU DE MON CONTENEUR.
    Je n'y arrive pas; voici le code :
    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
    root=tk.Tk()
    Fenetre=tk.Frame(root,width=100,height=300,bg='green',padx=10,pady=10)
    Fenetre.pack(side=tk.RIGHT,fill=tk.BOTH,expand=tk.Y)
     
    tk.Button(Fenetre,text='B1').pack()
    tk.Button(Fenetre,text='B2').pack()
    tk.Button(Fenetre,text='B3').pack()
    tk.Button(Fenetre,text='B4').pack()
    root.mainloop()
    La fenêtre est redimensionnée automatiquement pour s'adapter à la place de mes 4 boutons, qui sont collés en haut.
    Quelqu'un connaît-il la solution pour que ma fenêtre ne soit pas redimensionnée toute seule, et surtout, que mes boutons soient au milieu ?
    PS. Un autre méthode que pack est peut-être préférable ?

  2. #2
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2012
    Messages : 15
    Points : 17
    Points
    17
    Par défaut hello
    Bonjours, je ne suis pas un grand spécialiste mais dans ce cas, je crois que la méthode grid serait plus indiquée.
    Bonne journée

  3. #3
    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 boulot du geometry manager sera d'adapter les dimensions d'une window pour qu'elle contienne l'ensemble des widgets placés dedans.
    Si vous ne voulez pas que les dimensions s'adaptent, il faut écrire frame.[pack|grid]_propagate(0).

    Pour que le widget soit centré, je dirais que c'est une case 1x1 dont les dimensions minimales sont celles de la window.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> frame = tk.Frame(width=300, height=300, bg='blue')
    >>> frame.grid_propagate(0)
    >>> frame.grid_columnconfigure(0, minsize=300)
    >>> frame.grid_rowconfigure(0, minsize=300)
    >>> label = tk.Label(frame,text='foo')
    >>> label.grid(row=0, column=0)
    >>> frame.pack()
    Pour remplacer mon "label" par vos "button", il suffit de créer une autre frame et y mettre vos button.
    Cette frame joue alors le rôle de mon "label".

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

  4. #4
    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 enicnath Voir le message
    Voici mon problème : j'ai donc créé un conteneur afin d'y mettre 4 boutons.
    Je souhaiterais que ces boutons soient empilés, les uns au dessus des autres, avec un petit espace entre chacun, mais, AU MILIEU DE MON CONTENEUR.
    La fenêtre est redimensionnée automatiquement pour s'adapter à la place de mes 4 boutons, qui sont collés en haut.
    Quelqu'un connaît-il la solution pour que ma fenêtre ne soit pas redimensionnée toute seule, et surtout, que mes boutons soient au milieu ?
    PS. Un autre méthode que pack est peut-être préférable ?
    Bonsoir,
    Je ne comprends pas le problème.
    Avec le gestionnaire Pack, la dimension d'une Frame s'ajuste automatiquement à son contenu. C'est le principe!
    Un espace entre les Widgets et le bord de la Frame?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import tkinter as tk    #Tkinter pour Python2/tkinter pour Python3
    root=tk.Tk()
    fen=tk.Frame(root, bg='green',padx=200 ,pady=100)
    fen.pack()
     
    tk.Button(fen, text='B1', command=root.quit).pack()
     
    root.mainloop()
    root.destroy()
    Si l'objectif est de positionner d'autres Widgets autour de ces Widgets centraux, alors il suffit de l'écrire!
    Mais ainsi que le dit nondj, pour des interfaces plus "sophistiquées", Grid pourrait être utile.
    Maintenant, Pack a l'avantage de la simplicité pour les interfaces simples!

    Clodion

Discussions similaires

  1. Encore des problèmes avec le BDE
    Par Flint dans le forum C++Builder
    Réponses: 19
    Dernier message: 31/12/2007, 23h26
  2. [Jtree][JScrollPane] problème de positionnement
    Par billynirvana dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 07/07/2005, 16h53
  3. Problème pour positionner une liste déroulante
    Par ouckileou dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 30/09/2004, 01h05
  4. Réponses: 8
    Dernier message: 10/08/2004, 11h49
  5. Encore un probléme de date avec TADO !
    Par bNoureddine dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/02/2004, 18h22

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