1

我正在一个垂直大小调整器中创建一个 staticbox 和一个 staticboxsizer。一切对我来说都很好,但不适用于客户的环境。

静态框中的所有内容都会显示,但标签除外。下面的片段显示了我如何构造 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。

通常它在我的设置中显示为: alt text http://img152.imageshack.us/img152/8758/normalnu9.jpg

这就是我在客户设置中得到的: alt text http://img258.imageshack.us/img258/2351/problematiczo2.jpg

两种设置都具有相同的 wxpython 版本,即 2.8.9.1。但 2.8.* 也显示在我的环境中。有什么建议么?

4

2 回答 2

1

wxStaticBox 的源代码在绘画代码中做了不同的事情,这取决于是否启用了 XP 主题。在没有主题的屏幕截图中,一切看起来都很好,在启用了主题的屏幕截图中,标签丢失了。你能在你的系统上尝试启用主题,看看标签是否显示正常吗?或者您的客户可以暂时禁用主题并检查是否可以解决问题?

此外,您使用什么作为标签的父级 - 框架/对话框或静态框?我无法从发布的代码中看到它,但我会使用静态框。也许这也会有所作为。

于 2009-01-29T12:02:11.590 回答
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 回答