2009-05-02 3 views
1

Я написал следующий код, используя FoldPanelBar:WxPython: FoldPanelBar не очень складной

import wx 
import wx.lib.agw.foldpanelbar as fpb 

class frame(wx.Frame): 
    def __init__(self,*args,**kwargs): 
     wx.Frame.__init__(self,*args,**kwargs) 
     self.text_ctrl_1=wx.TextCtrl(self,-1,style=wx.TE_MULTILINE) 

     self.fpb=fpb.FoldPanelBar(self,-1, style=fpb.FPB_HORIZONTAL) 
     self.fold_panel=self.fpb.AddFoldPanel("Thing") 
     self.thing=wx.TextCtrl(self.fold_panel,-1, size=(400,-1), style=wx.TE_MULTILINE) 
     self.fpb.AddFoldPanelWindow(self.fold_panel, self.thing) 

     self.sizer_1=wx.BoxSizer(wx.HORIZONTAL) 

     self.sizer_1.Add(self.text_ctrl_1,1,wx.EXPAND) 
     self.sizer_1.Add(self.fpb,1,wx.EXPAND) 

     self.SetSizer(self.sizer_1) 

     self.Show() 



if __name__=="__main__": 
    app=wx.PySimpleApp() 
    frame(None,-1) 
    app.MainLoop() 

Это то, что он выглядит перед складыванием:

alt text http://img23.imageshack.us/img23/4309/before.gif

Право текстовое поле находится в красной панели, поэтому, когда я нажимаю стрелку, она исчезает. Тем не менее, это выглядит следующим образом:

alt text http://img22.imageshack.us/img22/6306/afterz.gif

Я ожидал, что левое текстовое поле, чтобы расти в размерах, чтобы заполнить весь кадр.

Что я делаю неправильно?

ответ

1

Это делает то, что вы хотите, я думаю. Я не тестировал несколько панелей в панели foldpanelbar, вам может потребоваться ограничить размер панели foldpanelbar, чтобы предотвратить ее слишком широкое распространение.

import wx 
import wx.lib.agw.foldpanelbar as fpb 

class frame(wx.Frame): 
    def __init__(self, *args, **kwargs): 
     wx.Frame.__init__(self, *args, **kwargs) 
     self.text_ctrl_1=wx.TextCtrl(self, -1, size=(400, 100), 
            style=wx.TE_MULTILINE) 
     self.fpb = fpb.FoldPanelBar(self, -1, 
      style=fpb.FPB_HORIZONTAL|fpb.FPB_DEFAULT_STYLE) 
     self.fold_panel = self.fpb.AddFoldPanel("Thing") 
     self.thing = wx.TextCtrl(self.fold_panel, -1, size=(400, -1), 
           style=wx.TE_MULTILINE) 
     self.fpb.AddFoldPanelWindow(self.fold_panel, self.thing) 
     self.fpb.Bind(fpb.EVT_CAPTIONBAR, self.onCaptionBar) 
     self.sizer_1 = wx.BoxSizer(wx.HORIZONTAL) 
     self.sizer_1.Add(self.text_ctrl_1, 1, wx.EXPAND) 
     self.sizer_1.Add(self.fpb, 0, wx.EXPAND) 
     self.SetSizer(self.sizer_1) 
     self.ResizeFPB() 

    def onCaptionBar(self, event): 
     event.Skip() 
     wx.CallAfter(self.ResizeFPB) 

    def ResizeFPB(self): 
     sizeNeeded = self.fpb.GetPanelsLength(0, 0)[2] 
     self.fpb.SetMinSize((sizeNeeded, self.fpb.GetSize()[1])) 
     self.Fit() 


app = wx.App(0) 
f = frame(None) 
f.Show() 
app.MainLoop() 

 Смежные вопросы

  • Нет связанных вопросов^_^