Ich habe mehrere Schaltflächen in verschiedenen Sizer und sie erweitern in der Art, die ich will sie. Wenn ich jedoch das Elternelement zu einem neuen wx.BoxSizer hinzufüge, der zum Hinzufügen eines Rahmens um alle Elemente im Rahmen verwendet wird, funktioniert der Sizer, der hinzugefügt wurde, korrekt vertikal, aber nicht horizontal.wxPython: Elemente in BoxSizer nicht horizontal horizontal, nur vertikal
Der folgende Code demonstriert das Problem:
#! /usr/bin/env python
import wx
import webbrowser
class App(wx.App):
def OnInit(self):
frame = MainFrame()
frame.Show()
self.SetTopWindow(frame)
return True
class MainFrame(wx.Frame):
title = 'Title'
def __init__(self):
wx.Frame.__init__(self, None, -1, self.title)
panel = wx.Panel(self)
#icon = wx.Icon('icon.png', wx.BITMAP_TYPE_PNG)
#self.SetIcon(icon)
sizer = wx.FlexGridSizer(rows=2, cols=1, vgap=10, hgap=10)
button1 = wx.Button(panel, -1, 'BUTTON')
sizer.Add(button1, 0, wx.EXPAND)
buttonSizer = wx.FlexGridSizer(rows=1, cols=4, vgap=10, hgap=5)
buttonDelete = wx.Button(panel, -1, 'Delete')
buttonSizer.Add(buttonDelete, 0, 0)
buttonEdit = wx.Button(panel, -1, 'Edit')
buttonSizer.Add(buttonEdit, 0, 0)
buttonNew = wx.Button(panel, -1, 'New')
buttonSizer.Add(buttonNew, 0, 0)
buttonSizer.AddGrowableCol(0, 0)
sizer.Add(buttonSizer, 0, wx.EXPAND|wx.HORIZONTAL)
sizer.AddGrowableCol(0, 0)
sizer.AddGrowableRow(0, 0)
mainSizer = wx.BoxSizer(wx.EXPAND)
mainSizer.Add(sizer, 0, wx.EXPAND|wx.ALL, 10)
#panel.SetSizerAndFit(sizer)
#sizer.SetSizeHints(self)
panel.SetSizerAndFit(mainSizer)
mainSizer.SetSizeHints(self)
if __name__ == '__main__':
app = App(False)
app.MainLoop()
Linien und und Auskommentierung Linien und entfernt die zusätzlichen BoxSizer und zeigt kommentiert, wie ich alle Funktion erwarten (natürlich ohne Whitespace).
Ich bin vollständig mit diesem Problem fest und habe immer noch keine Ahnung, wie es zu beheben ist.