1

垂直サイザーで staticbox と staticboxsizer を作成しています。私にとってはすべてうまくいきますが、顧客の環境ではうまくいきません。

staticbox 内のすべてが表示されますが、ラベルのみが表示されます。以下のスニペットは、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_* は、wx.StaticText(label='blah') を返します。派手なものはなく、単なるラッパーです。これは、他のサイザーの他の ~400 個のアイテムに対して正常に機能します。ただし、StaticBox または StaticBoxSizers では、顧客のセットアップで StaticText が表示されません。

通常、私の設定では次のように表示されます: 代替テキスト http://img152.imageshack.us/img152/8758/normalnu9.jpg

これは私が顧客のセットアップで得たものです: 代替テキスト http://img258.imageshack.us/img258/2351/problematiczo2.jpg

どちらのセットアップも同じ wxpython バージョン 2.8.9.1 を使用しています。しかし、私の環境では 2.8.* も表示されます。助言がありますか?

4

2 に答える 2

1

comp.Component はメイン パネル -ScrolledPanel- を親として使用します

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)

一時的ではあるが成功した解決策として、staticboxes を削除し、staticboxsizer を gridbagsizer に変更しました。すべて正常に動作します :) おそらく問題は、あなたが言ったようにテーマに関連しており、ラベルの前景色を変更するとうまくいくと思います。

返信ありがとう

于 2009-01-30T19:45:01.813 に答える