Wie kann ich eine wx.sizer eines wx.panel erweitern, wenn die Platte in einem anderen wx.sizer erweitert wird?

StackOverflow https://stackoverflow.com/questions/611592

  •  03-07-2019
  •  | 
  •  

Frage

Ich habe eine wx.Panel, die eine GridBagSizer mit ihm verbunden hat. Diese Platte wird in einem anderen Sizer (BoxSizer) platziert, deren Zusatz hat die Flagge erweitern - was bedeutet, dass das Panel über die gesamte Breite des Sizer nimmt, was toll ist. ... Aber der interne Sizer des Panels füllt nicht die Platte jetzt.

Ich habe versucht, die internen Sizer Flagge auf wx.Expand Einstellung | wx.ALL, wenn ich es Komponenten hinzufügen, aber das hat nicht funktioniert. Jeder weiß, wie die Sizer, um sicherzustellen, die gleiche Breite wie es der Platte bleiben, wenn die Platte erweitert wird?

Edit: Mein Code, der die Platte mit dem GridBagSizer erstellt:

def getNewButton(self, bmp1, bmp2, label):
        panel = wx.Panel(self.frame, -1, pos=(0,0), style=wx.BORDER_THEME)
        sizer = wx.GridBagSizer(0, 1)

        #The button
        b = buttons.GenBitmapToggleButton(panel, wx.ID_ANY, None)
        self.frame.Bind(wx.EVT_BUTTON, self.OnToggleButton, b)
        b.Bind(wx.EVT_ENTER_WINDOW, self.OnMouseEnter)
        b.Bind(wx.EVT_LEAVE_WINDOW, self.OnMouseLeave)
        mask = wx.Mask(bmp1, wx.BLUE)
        bmp1.SetMask(mask)
        b.SetBitmapLabel(bmp1)
        mask = wx.Mask(bmp2, wx.BLUE)
        bmp2.SetMask(mask)
        b.SetBitmapSelected(bmp2)
        b.SetToggle(False)
        b.SetInitialSize(size = wx.Size(30, 30))
        b.SetBezelWidth(0)

        #The Label Button
        l1 = buttons.GenButton(panel, wx.ID_ANY, label, style=wx.BORDER_NONE)
        self.frame.Bind(wx.EVT_BUTTON, self.OnFlatButton, l1)
        l1.Bind(wx.EVT_ENTER_WINDOW, self.OnMouseEnter)
        l1.Bind(wx.EVT_LEAVE_WINDOW, self.OnNonToggleMouseLeave)

        sizer.Add(b, wx.GBPosition(0,0))
        sizer.Add(l1, wx.GBPosition(0,1), flag=wx.EXPAND)

        panel.SetSizer(sizer)
        sizer.SetSizeHints(panel)
        self.buttonsList.append(ImgToggleButtonComponents(b,panel,l1))
        return panel
War es hilfreich?

Lösung

Alles, was Sie hier machen sieht vernünftig. Ich glaube, du verpasst eine AddGrowableCol () -Aufruf.

    sizer.Add(b, wx.GBPosition(0,0))
    sizer.Add(l1, wx.GBPosition(0,1), flag=wx.EXPAND)
    sizer.AddGrowableCol(1)

Ich habe persönlich mehr Glück mit einem FlexGridSizer anstelle einem GridBagSizer habe

    fgs = wx.FlexGridSizer(gridRows[fields], 2, 0, 0)
    fgs.AddGrowableCol(1)

    fgs.Add(wx.StaticText(self, -1, "Contact Phone"), 0, wx.ALL, border)

Andere Tipps

Sie haben die richtige Idee. Wenn Sie einen Code veröffentlichen, (nur einige Platzhalter, mit verschiedenen Hintergrundfarben oder etwas, damit wir sehen, was passiert) wird es leichter zu diagnostizieren sein. Stellen Sie sicher, dass die Eltern Innenverkleidung richtig eingestellt ist, und Sie könnten einige Sizer Hinweise versuchen. Gridbagsizer.SetSizeHints (innerPanel) und sehen, ob das hilft

Eine andere Möglichkeit, dies zu tun ist mit einer Box Sizer:

sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(item1)
sizer.Add(item2, proportion=1, flag=wx.EXPAND)

Beide Wege gearbeitet! Danke:)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top