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?

War es hilfreich?

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
scroll top