Элементы StaticText исчезают в wx.StaticBox - PullRequest
1 голос
/ 27 января 2009

Я создаю 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 или StaticBoxSizer статический текст не отображается при настройке клиента.

обычно это отображается в моей настройке: альтернативный текст http://img152.imageshack.us/img152/8758/normalnu9.jpg

вот что я получаю по настройке клиента: альтернативный текст http://img258.imageshack.us/img258/2351/problematiczo2.jpg

обе установки имеют одинаковые версии wxpython, 2.8.9.1. но 2.8. * также отображается в моем окружении. есть предложения?

Ответы [ 2 ]

1 голос
/ 30 января 2009

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, все работает отлично :) скорее всего проблема связана с темой, как вы сказали, и я думаю, что изменение цвета переднего плана для меток может просто сработать .

спасибо за ответ

1 голос
/ 29 января 2009

Исходный код wxStaticBox делает разные вещи в рисовании кода, в зависимости от того, включены ли темы XP. На снимке экрана без тем все выглядит нормально, на том, на котором темы включены, ярлыки отсутствуют. Не могли бы вы попробовать в вашей системе с включенными темами, и посмотреть, отображаются ли ярлыки в порядке? Или ваш клиент может временно отключить темы и проверить, устраняет ли это проблему?

Кроме того, что вы используете в качестве родителя для надписей - рамка / диалоговое окно или статическое поле? Я не вижу его по опубликованному коду, но я бы использовал статическое поле. Может быть, это тоже будет иметь значение.

...