2009-01-27 47 views
1

我在垂直分割器中創建一個staticbox和一個staticboxsizer。一切工作都適合我,但不適合客戶的環境。StaticText項目在wx.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(標籤= '胡說'),沒有什麼花哨,只是一個包裝,它工作正常,在其他分級機等〜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。*也會顯示在我的環境中。 有什麼建議嗎?

+0

相同的操作系統?您可以發佈一個顯示問題的最小完整應用程序嗎? – 2009-01-28 01:10:15

回答

1

wxStaticBox的源代碼在繪製代碼中做了不同的事情,這取決於是否啓用了XP主題。在沒有主題的屏幕截圖中,一切都看起來不錯,在啓用主題的屏幕中,標籤丟失。你可以嘗試啓用主題的系統,看看標籤是否顯示OK?或者,您的客戶是否可以臨時禁用主題並檢查是否解決了問題?

另外,你用什麼作爲標籤的父 - 框架/對話框或靜態框?我無法從發佈的代碼中看到它,但我會使用靜態框。也許這也會有所作爲。

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,一切工作正常:)最有可能的問題與你所說的主題有關,我猜想改變標籤的前景色可能是正常的。

感謝您的回覆