WXPYTHON : 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,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()
제휴하지 않습니다 StackOverflow