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 :

wx.StatixText, wrapping et sizer


Sujet :

wxPython

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 28
    Par défaut wx.StatixText, wrapping et sizer
    Bonsoir,

    J'ai un problème avec un statictext dans ma fenêtre. Je m'explique:

    J'ai un StaticText assez long ( au vue de la taille de ma fenêtre ) suivis de deux autres éléments ( un autre StaticText et un TextCtrl ).

    Le tout est contenu dans un panel muni d'un GridBagSizer muni de trois colonnes mouvante ( AddGrowableCol ). Ce panel est contenu lui même dans un Panel qui fait la moitié de la fenetre.

    Le problème est qu'à l'ouverture de ma fenêtre ( et lors de son redimensionnement ) mon panel déborde à droite, et du coup on ne vois qu'une partie de mon TextCtrl et pas du tout mon deuxième StaticText, si la fenêtre n'est pas assez grande pour tout contenir sur une seule ligne.

    Le problème est donc que mon premier StaticText ( le long ) ne wrap pas automatiquement sur plusieurs lignes. J'ai bien essayer de le wrapper à la main en bindant le panel qui le contient avec l'evenement EVT_SIZE, mais cela bloque le sizer du coup ( qui dois surement l'utiliser aussi )

    Auriez-vous une solution pour obliger le StaticText a wrapper correctement, ou qu'il le fasse automatiquement de manière correcte?

    Voici le code, très épuré
    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
     
    class PanneauBasGauche(wx.Panel):
        def __init__(self, parent, programme):
            wx.Panel.__init__(self, parent);
            self.parent = parent;
            self.programme = programme;
     
            self.sizer = wx.GridBagSizer();
            self.sizer.AddGrowableCol(0);
            self.sizer.AddGrowableCol(1);
            self.sizer.AddGrowableCol(2);
            self.sizer.AddGrowableRow(0);
            self.sizer.AddGrowableRow(1);
            self.sizer.AddGrowableRow(2);
     
            self.SetSizer(self.sizer);
            inter = wx.CheckBox(self, label = Data.TEXTEBOUTONINTERUPTION, style = wx.ALIGN_RIGHT|wx.CHK_2STATE);
            texteTemps = wx.StaticText(self, label = Data.TEXTEBOUTONTEMPS, style = wx.ALIGN_RIGHT);
            texteUniteTemps = wx.StaticText(self, label = Data.TEXTEUNITETEMPS);
            valTemps = wx.TextCtrl(self, value = str(Data.ATTENTEPARDEFAUT));
            boutonRegen = wx.Button(self, label = Data.TEXTEBOUTONREGEN);
            self.sizer.Add(inter, (0,1), flag = wx.ALIGN_CENTER);
            self.sizer.Add(texteTemps, (1,0), flag = wx.ALIGN_CENTER);
            self.sizer.Add(valTemps, (1,1), flag = wx.ALIGN_CENTER);
            self.sizer.Add(texteUniteTemps,(1,2), flag = wx.ALIGN_CENTER);
            self.sizer.Add(boutonRegen, (2,1), flag = wx.ALIGN_CENTER);  
            self.Update();
            self.sizer.Layout();
    Merci d'avance

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

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

    A ma connaissance un StaticText ne wrap pas automatiquement. C'est le gros souci de ce contrôle. Tu peux trouver sur le net des bouts de code qui essaient de combler cette lacune tant bien que mal.

    Une des parades que je trouve intéressante est d'utiliser un wx.html sur lequel on met un background de même couleur que la fenêtre (Pour ça, il faut un bout de code qui trouve la couleur par défaut du système : win32 peut le faire sûr, wx aussi je crois) pour que cela ressemble à un simple StaticText. C'est casse-pieds, mais cela fonctionne bien et ça te permet en plus de pouvoir formater ton texte (gras, souligné, italique, etc...)

    J'espère ne pas avoir dit de bêtises...

    Bonne chance !

Discussions similaires

  1. Wrap <TD>
    Par CAML dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 26/03/2006, 23h23
  2. [swing]JTextPane sans line wrap automatique
    Par oca dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 21/02/2006, 08h40
  3. [MFC] zone de texte avec "wrap" automatique
    Par bigquick dans le forum MFC
    Réponses: 3
    Dernier message: 21/04/2005, 16h26
  4. JList en line wrapping
    Par dreydrey dans le forum Composants
    Réponses: 3
    Dernier message: 16/12/2003, 11h22
  5. StringGrid, multiligne et word wrap
    Par Dajon dans le forum C++Builder
    Réponses: 7
    Dernier message: 17/09/2003, 17h15

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