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

wxPython Discussion :

Mettre un élement au centre d'une Frame


Sujet :

wxPython

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 70
    Par défaut Mettre un élement au centre d'une Frame
    Bonjour,

    je bloque sur un problème qui semble pourtant semble simple.
    J'ai une wx.Frame dans laquelle je voudrais placer un bouton en plein milieu.

    J'ai essayé avec un BoxSizer puis un GridSizer, à chaque fois en faisant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monsizer.Add(monbutton,flag = wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL)
    mais le bouton reste toujours dans le coin en haut à gauche.

    Comment le placer au milieu ?

    Merci d'avance pour votre aide!

  2. #2
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Bonsoir,

    un exemple simple:
    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 wx
     
    class MyFrame(wx.Frame):
     
        def __init__(self, *args, **kwargs):
     
            wx.Frame.__init__(self, *args, **kwargs)
     
            panel = wx.Panel(self)
     
            self.btn = wx.Button(panel, -1, "click me!!!")
     
            szr = wx.GridBagSizer(5, 5)
            szr.Add(self.btn, (0, 0), flag=wx.ALIGN_CENTRE_VERTICAL|wx.ALIGN_CENTRE_HORIZONTAL)
            szr.AddGrowableCol(0)
            szr.AddGrowableRow(0)
     
            panel.SetSizer(szr)
     
    if __name__ == "__main__":
     
        app = wx.PySimpleApp(redirect=False)
        fr = MyFrame(None, -1, "test bouton")
        fr.Show(True)
        app.MainLoop()
    Bon python.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 70
    Par défaut
    Salut, merci pour ta réponse.
    En fait c'est à peu près ce que j'avais fait et je viens de me rendre compte que ça fonctionne dans le cas d'une Frame avec une taille définie.
    Simplement, je n'avais pas défini la taille car je voudrais que la Frame prenne tout l'écran.

    Je n'ai donc pas spécifié le paramètre size pour la Frame et je lui mis le style = wx.MAXIMIZE

    Et là du coup ça fonctionne plus.

    Donc, ma question devient plutôt: comment faire une Frame plein écran avec un bouton en plein milieu ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 70
    Par défaut
    Bon j'ai compris mon erreur.
    wx.MAXIMIZE ne rend pas du tout la Frame à la taille Plein Ecran, il maximise juste "l'application" donc on a l'impression que ça prend tout l'écran mais en fait ma Frame est seulement ajusté à la taille de mon bouton.
    Donc en fait le seul truc qui me manque, c'est d'arriver à faire une Frame rééllement plein écran.

    Si quelqu'un sait faire ça dans l'assistance, j'en serais fort heureux.
    J'ai essayé de faire size = wx.DisplaySize() mais ça donne rien.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 70
    Par défaut
    Bon ben, continuant sur ma lancée, je me réponds à moi même:
    j'ai remplacé le

    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ma frame.ShowFullScreen(True,style=wx.FULLSCREEN_ALL)
    et ça a l'air de fonctionner.

  6. #6
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 84
    Par défaut
    Bonjour,

    Pour ton placement de bouton tu peux aussi lui indiquer les coordonnées et sa taille éventuellement. Certe faut calculer suivant ce que tu veux faire mais ca marche très bien aussi.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 45
    Par défaut
    Salut,

    Tu devrais essayer de redimensionner ton sizer par exemple avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monsizer.SetDimension(x,y,width,height)
    en remplaçant bien ssûr les paramètres par les dimensions de ta fenêtre.

    Puis,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monsizer.SetMinSize(width,height)

    Voila voila j'espère avoir réussi à t'aider un peu,

    Bye,
    Lotendan

Discussions similaires

  1. mettre un formulaire au centre d'une page web
    Par fattouch_squall dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 02/12/2007, 10h37
  2. Communiquer avec les élements d'une frame
    Par Gomoz dans le forum C#
    Réponses: 2
    Dernier message: 28/09/2007, 17h23
  3. Probleme afficher au centre d'une frame
    Par brasco06 dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 18/02/2006, 21h51
  4. Réponses: 9
    Dernier message: 17/10/2005, 10h44
  5. comment mettre du texte formaté dans une frame?
    Par afrikha dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 09/10/2005, 14h55

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