WxPython: FoldPanelBar nicht wirklich Falten
Frage
Ich habe den folgenden Code verwenden FoldPanelBar geschrieben:
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()
Dies ist, was es sieht aus wie vor Falten:
alt text http://img23.imageshack.us/img23/4309/before .gif
Die rechte Textbox ist in dem Falte-Panel, so dass, wenn ich auf den Pfeil klicken, es verschwindet. Allerdings sieht es wie folgt aus:
alt text http://img22.imageshack.us/img22/6306/afterz .gif
ich erwartet, dass das linke Textfeld in der Größe wachsen den gesamten Rahmen zu füllen.
Was mache ich falsch?
Lösung
Das tut, was Sie wollen, glaube ich. Ich habe nicht mehr Platten in der foldpanelbar getestet, müssen Sie möglicherweise die Größe des foldpanelbar explizit es zu vermeiden, dass zu weit begrenzen.
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()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow