2009-01-27 10 views
1

Je crée une staticbox et un staticboxsizer dans un calibreur vertical. Tout fonctionne bien pour moi, mais pas sur l'environnement du client.Les éléments StaticText disparaissent dans wx.StaticBox

Tout dans la staticbox est affiché, mais les étiquettes. extrait ci-dessous montre comment je construis le staticboxsizer.

sbox2 = wx.StaticBox(self, wx.ID_ANY, 'CH1 Only') 
    sboxsizer2 = wx.StaticBoxSizer(sbox2, wx.VERTICAL) 

    gsizer9 = wx.GridBagSizer(1,1) 
    gsizer9.Add(comp.MinMaxLabel_21, (1,0), (1,1), wx.ALL, 1) 
    gsizer9.Add(comp.MinMax_21, (1,1), (1,1), wx.ALL, 1) 

    gsizer9.Add(comp.MinMax_19, (2,1), (1,1), wx.ALL, 1) 
    gsizer9.Add(comp.MinMaxLabel_19, (2,0), (1,1), wx.ALL, 1) 

    gsizer9.Add(comp.VcOS_15, (3,1), (1,1), wx.ALL, 1) 
    gsizer9.Add(comp.MinMaxLabel_22, (3,0), (1,1), wx.ALL, 1) 


    gsizer9.Add(comp.MonLabel_18, (0,3), (1,1), wx.ALL, 1) 
    gsizer9.Add(comp.MonLabel_21, (0,4), (1,1), wx.ALL, 1) 
    gsizer9.Add(comp.MonLabel_17, (0,5), (1,1), wx.ALL, 1) 
    comp.MonLabel_22.Wrap(40) 
    gsizer9.Add(comp.MonLabel_22, (0,6), (1,1), wx.ALL, 1) 
    comp.MonLabel_19.Wrap(40) 
    gsizer9.Add(comp.MonLabel_19, (0,7), (1,1), wx.ALL, 1) 

    gsizer9.Add(comp.VcOS_10, (1,3), (1,1), wx.ALL, 1) 
    gsizer9.Add(comp.VcOS_11, (1,4), (1,1), wx.ALL, 1) 
    gsizer9.Add(comp.VcOS_12, (1,5), (1,1), wx.ALL, 1) 
    gsizer9.Add(comp.VcOS_13, (1,6), (1,1), wx.ALL, 1) 
    gsizer9.Add(comp.VcOS_14, (1,7), (1,1), wx.ALL, 1) 

    sboxsizer2.Add(gsizer9, 0,0,0) 
    vsizer4.Add(sboxsizer2, 0,0,0) 

comp.MinMaxLabel_ * retourne un wx.StaticText (label = 'bla'), rien d'extraordinaire, juste un emballage, qui fonctionne très bien pour d'autres ~ 400 articles dans d'autres calibreurs. mais dans StaticBox ou StaticBoxSizers, aucun StaticText n'est affiché dans la configuration du client.

normalement il est affiché comme cela dans ma configuration: alt text http://img152.imageshack.us/img152/8758/normalnu9.jpg

ce que je reçois sur la configuration du client: alt text http://img258.imageshack.us/img258/2351/problematiczo2.jpg

les deux configurations ont les mêmes versions de wxPython, 2.8.9.1. mais 2.8. * s'affiche également sur mon environnement. des suggestions?

+0

Même système d'exploitation? Pourriez-vous poster une application complète minimale qui affiche le problème? –

+0

mine est un système linux auto-compilé 32 bits et le client utilise un noyau fedora 64 bits. mais je suppose que mghie a déclaré, le thème est le problème ici. – hinoglu

Répondre

1

Le code source de wxStaticBox fait différentes choses dans le code de peinture, selon que les thèmes XP sont activés. Dans la capture d'écran sans thèmes tout semble OK, dans celui avec des thèmes activés les étiquettes sont manquantes. Pourriez-vous essayer votre système avec des thèmes activés, et voir si les étiquettes s'affichent correctement? Ou votre client peut-il temporairement désactiver les thèmes et vérifier si cela résout le problème?

En outre, qu'est-ce que vous utilisez comme parent pour les étiquettes - le cadre/boîte de dialogue ou la boîte statique? Je ne peux pas le voir à partir du code affiché, mais j'utiliserais la boîte statique. Peut-être que cela fera une différence aussi.

1

comp.Component utilise le panneau principal -ScrolledPanel- comme parent

class MyBackground(ScrolledPanel): 
    def __init__(self, parent, components): 
     ScrolledPanel.__init__(self, parent, -1, style=wx.TAB_TRAVERSAL) 
     self.setFont() 
     comp = Components(components, self) 

... 
... 
app = wx.PySimpleApp(0) 
wx.InitAllImageHandlers() 
frame = wx.Frame(None, -1, 'Set Limits', size=(800,600), style=wx.DEFAULT_FRAME_STYLE) 
panel = MyBackground(frame, components) 

comme une solution temporaire mais réussie, je l'ai enlevé et changé staticboxes staticboxsizer à gridbagsizer, tout fonctionne très bien :) problème le plus probablement est lié au thème que vous avez dit et je suppose que changer la couleur de premier plan pour les étiquettes pourrait bien fonctionner.

merci pour la réponse

Questions connexes