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 :

champs multiples dans la meme fenetre


Sujet :

wxPython

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 26
    Points
    26
    Par défaut champs multiples dans la meme fenetre
    salut,
    j'ecris une interface graphique en wxpython, mais j'ai du mal à trouver comment mettre des bloc de fenetre dans la fenetre principale. je veux deux bloc qui vont contenir d'autres et un troisième pour du texte, et je veux pouvoir gerer leur dimension et qui s'adapte avec la fenetre principale si elle change de taille. j'ai utiliser le GridBagSizer et j'ai mis des champs avec StaticBox mais ça n'a pas l'ai de pouvoir contenir d'autre fenetre.
    quequ'un aurait des idées svp?
    merci

  2. #2
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 26
    Points
    26
    Par défaut
    voilà une capture d'd'ecran d'une application similaire faite en java (en pj)
    Images attachées Images attachées  

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Points : 240
    Points
    240
    Par défaut
    Salut,

    Bon, je sais pas si j'ai compris la question alors désolé si je réponds à côté :

    Tu as besoin de FlexGridSizer à l'intérieur de tes staticBox. Utilise également des .AddGrowableCol() et .AddGrowableRow() un peu partout !

    Un petit exemple fait avec wxGlade vite fait:

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    #!/usr/bin/env python
    # -*- coding: iso-8859-15 -*-
    # generated by wxGlade 0.6.1 on Fri May 02 21:35:17 2008
     
    import wx
     
    # begin wxGlade: extracode
    # end wxGlade
     
     
     
    class MyFrame(wx.Frame):
        def __init__(self, *args, **kwds):
            # begin wxGlade: MyFrame.__init__
            kwds["style"] = wx.DEFAULT_FRAME_STYLE
            wx.Frame.__init__(self, *args, **kwds)
            self.panel_1 = wx.Panel(self, -1)
            self.sizer_3_staticbox = wx.StaticBox(self.panel_1, -1, "Box 2")
            self.sizer_4_staticbox = wx.StaticBox(self.panel_1, -1, "Box 3")
            self.sizer_5_staticbox = wx.StaticBox(self.panel_1, -1, "Box 4")
            self.sizer_2_staticbox = wx.StaticBox(self.panel_1, -1, "Box 1")
            self.label_1 = wx.StaticText(self.panel_1, -1, "label_1")
            self.label_2 = wx.StaticText(self.panel_1, -1, "label_2")
            self.label_3 = wx.StaticText(self.panel_1, -1, "label_3")
            self.label_4 = wx.StaticText(self.panel_1, -1, "label_4")
            self.label_5 = wx.StaticText(self.panel_1, -1, "label_5")
            self.label_6 = wx.StaticText(self.panel_1, -1, "label_6")
            self.label_7 = wx.StaticText(self.panel_1, -1, "label_7")
            self.label_8 = wx.StaticText(self.panel_1, -1, "label_8")
            self.label_9 = wx.StaticText(self.panel_1, -1, "label_9")
            self.label_10 = wx.StaticText(self.panel_1, -1, "label_10")
            self.label_11 = wx.StaticText(self.panel_1, -1, "label_11")
            self.label_12 = wx.StaticText(self.panel_1, -1, "label_12")
            self.label_13 = wx.StaticText(self.panel_1, -1, "label_13")
            self.label_14 = wx.StaticText(self.panel_1, -1, "label_14")
            self.label_15 = wx.StaticText(self.panel_1, -1, "label_15")
            self.label_16 = wx.StaticText(self.panel_1, -1, "label_16")
     
            self.__set_properties()
            self.__do_layout()
            # end wxGlade
     
        def __set_properties(self):
            # begin wxGlade: MyFrame.__set_properties
            self.SetTitle("frame_1")
            # end wxGlade
     
        def __do_layout(self):
            # begin wxGlade: MyFrame.__do_layout
            sizer_1 = wx.BoxSizer(wx.VERTICAL)
            grid_sizer_1 = wx.FlexGridSizer(3, 3, 10, 10)
            sizer_5 = wx.StaticBoxSizer(self.sizer_5_staticbox, wx.VERTICAL)
            sizer_4 = wx.StaticBoxSizer(self.sizer_4_staticbox, wx.VERTICAL)
            grid_sizer_4 = wx.FlexGridSizer(3, 3, 10, 10)
            sizer_3 = wx.StaticBoxSizer(self.sizer_3_staticbox, wx.VERTICAL)
            grid_sizer_3 = wx.FlexGridSizer(3, 3, 10, 10)
            sizer_2 = wx.StaticBoxSizer(self.sizer_2_staticbox, wx.VERTICAL)
            grid_sizer_2 = wx.FlexGridSizer(3, 3, 10, 10)
            grid_sizer_2.Add(self.label_1, 0, 0, 0)
            grid_sizer_2.Add(self.label_2, 0, 0, 0)
            grid_sizer_2.Add(self.label_3, 0, 0, 0)
            grid_sizer_2.Add(self.label_4, 0, 0, 0)
            grid_sizer_2.Add(self.label_5, 0, 0, 0)
            grid_sizer_2.Add(self.label_6, 0, 0, 0)
            grid_sizer_2.Add(self.label_7, 0, 0, 0)
            grid_sizer_2.AddGrowableRow(0)
            grid_sizer_2.AddGrowableRow(1)
            grid_sizer_2.AddGrowableRow(2)
            grid_sizer_2.AddGrowableCol(0)
            grid_sizer_2.AddGrowableCol(1)
            grid_sizer_2.AddGrowableCol(2)
            sizer_2.Add(grid_sizer_2, 1, wx.EXPAND, 0)
            grid_sizer_1.Add(sizer_2, 1, wx.EXPAND, 0)
            grid_sizer_3.Add(self.label_8, 0, 0, 0)
            grid_sizer_3.Add(self.label_9, 0, 0, 0)
            grid_sizer_3.Add(self.label_10, 0, 0, 0)
            grid_sizer_3.Add(self.label_11, 0, 0, 0)
            grid_sizer_3.Add(self.label_12, 0, 0, 0)
            grid_sizer_3.AddGrowableRow(0)
            grid_sizer_3.AddGrowableRow(1)
            grid_sizer_3.AddGrowableRow(2)
            grid_sizer_3.AddGrowableCol(0)
            grid_sizer_3.AddGrowableCol(1)
            grid_sizer_3.AddGrowableCol(2)
            sizer_3.Add(grid_sizer_3, 1, wx.EXPAND, 0)
            grid_sizer_1.Add(sizer_3, 1, wx.EXPAND, 0)
            grid_sizer_4.Add(self.label_13, 0, 0, 0)
            grid_sizer_4.Add(self.label_14, 0, 0, 0)
            grid_sizer_4.Add(self.label_15, 0, 0, 0)
            grid_sizer_4.Add(self.label_16, 0, 0, 0)
            grid_sizer_4.AddGrowableRow(0)
            grid_sizer_4.AddGrowableRow(1)
            grid_sizer_4.AddGrowableRow(2)
            grid_sizer_4.AddGrowableCol(0)
            grid_sizer_4.AddGrowableCol(1)
            grid_sizer_4.AddGrowableCol(2)
            sizer_4.Add(grid_sizer_4, 1, wx.EXPAND, 0)
            grid_sizer_1.Add(sizer_4, 1, wx.EXPAND, 0)
            grid_sizer_1.Add(sizer_5, 1, wx.EXPAND, 0)
            self.panel_1.SetSizer(grid_sizer_1)
            grid_sizer_1.AddGrowableRow(0)
            grid_sizer_1.AddGrowableRow(1)
            grid_sizer_1.AddGrowableRow(2)
            grid_sizer_1.AddGrowableCol(0)
            grid_sizer_1.AddGrowableCol(1)
            grid_sizer_1.AddGrowableCol(2)
            sizer_1.Add(self.panel_1, 1, wx.EXPAND, 0)
            self.SetSizer(sizer_1)
            sizer_1.Fit(self)
            self.Layout()
            # end wxGlade
     
    # end of class MyFrame
     
     
    if __name__ == "__main__":
        app = wx.PySimpleApp(0)
        wx.InitAllImageHandlers()
        frame_1 = MyFrame(None, -1, "")
        app.SetTopWindow(frame_1)
        frame_1.Show()
        app.MainLoop()
    Bonne chance !

  4. #4
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 26
    Points
    26
    Par défaut champs multiples dans la meme fenetre
    c'est vraiment ce que je veux, des champs avec leur titre dessus et qui s'adaptent avec la fenêtre principale. Mais je suis un peu perdu dans ces lignes de codes, est ce que tu peux commenter un peu plus? pour que je puisse comprendre et puis faire ma fenetre

    merci bcp,

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Points : 240
    Points
    240
    Par défaut
    Salut,

    Bon, mon ordi est au SAV pour 2 semaines. J'écris vite fait ce message à partir du boulot : Je ne pourrai donc pas commenter maintenant le code ci-dessus. Je te conseille de faire ton interface avec wxGlade et d'analyser le code produit. C'est facile :

    1. Crée des FlexGridSizer.
    2. Mets tes controles dedans.
    3. Place des .AddGrowableCol() et .AddGrowableRow() pour rendre ton FlexGridSizer étirable.

    Désolé, c'est court. Mais avec ça, tu pourras déjà sûrement t'en sortir.

    Bonne chance !

  6. #6
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juillet 2005
    Messages : 71
    Points : 53
    Points
    53
    Par défaut
    Salut,

    Je vois que vous parliez des staticbox avec wxglade.

    Et moi je veut faire la même chose sauf que wxglade ne propose pas les staticbox sauf en passant par des custom widgets.

    Y a une combine ou tu as développé toi même le contrôle pour wxglade.

    Merci à vous

  7. #7
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 84
    Points : 86
    Points
    86
    Par défaut
    Bonjour,

    Je viens juste te donner un bout de mes codes qui me sert à ajuster automatiquement une fenêtre en fonction de ma résolution.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ##### Librairies
    import ctypes               #Permet d'avoir des informations sur l'ecran
    #####
     
    def Screenauto(temp):
       SM_CXSCREEN = 0
       SM_CYSCREEN = 1
       taille_x = ctypes.windll.user32.GetSystemMetrics(SM_CXSCREEN)
       taille_y = ctypes.windll.user32.GetSystemMetrics(SM_CYSCREEN)
       vu = [taille_x-temp,taille_y-temp]
       return vu
    Grâce à ca tu peux lui dire de prendre une certaine taille et tu peux t'en servir pour tes autres fenêtre. Pense à bien noté certaines infos, sinon va y au tâtonnement. Voila j'espère t'avoir apporter un petit truc pour ton dev.

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

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Points : 1 728
    Points
    1 728
    Par défaut
    En utilisant les SplitterWindow tu pourras utiliser plusieurs panels/fenêtres.
    "Etre conscient de la difficulté permet de l'éviter.."
    Lao-Tseu.

Discussions similaires

  1. [WD10] Table et champ dans la meme fenetre
    Par mnssylvain dans le forum WinDev
    Réponses: 1
    Dernier message: 31/08/2008, 17h07
  2. insertion multiples dans un meme champ
    Par fétémété dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 13/07/2006, 16h16
  3. Comment Créer champ INPUT dans la meme page
    Par petchos64 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 13/04/2006, 15h41
  4. utilisation de la valeur du champs texte dans la meme page
    Par dracula2000 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 03/04/2006, 10h48
  5. update multiple dans une meme colonne
    Par debdev dans le forum Langage SQL
    Réponses: 7
    Dernier message: 29/01/2006, 21h46

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