سؤال

ولقد كتابة التعليمات البرمجية التالية باستخدام 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.

وهذا النص الصحيح هو في لوحة أضعاف، وذلك عندما كنت اضغط على السهم، فإنه يختفي. ومع ذلك، يبدو مثل هذا:

نص بديل 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