문제

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()

이것은 접기 전의 모습입니다.

대체 텍스트 http://img23.imageshack.us/img23/4309/before.gif

오른쪽 텍스트 상자는 접힘 패널에 있으므로 화살표를 클릭하면 사라집니다. 그러나 다음과 같이 보입니다.

Alt Text http://img22.imageshack.us/img22/6306/afterz.gif

왼쪽 텍스트 상자가 전체 프레임을 채우기 위해 크기가 커질 것으로 예상했습니다.

내가 뭘 잘못하고 있죠?

도움이 되었습니까?

해결책

이것은 당신이 내가 생각하는 일을합니다. 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()
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top