Andreas
Andreas

Reputation: 128

Grid and Sizers in wxPython

So I've got an issue with Grid and Sizers in wxPython, if i include this table the formating seems to mess up somehow, the entire window appears to have the correct size and the items appear at the correct locations.

But when this table is included the inner light grey which I guess is the panel ? but items below the table are hidden because of this dark grey field

removing the setcolsize calls doesn't fix it either

Thanks for any replies

    wx.Frame.__init__(self, parent, title=title)
    panel = wx.Panel(self)

    grid = wx.GridBagSizer(hgap=5, vgap=5)
    #  some other items comes before this
    # FileGrid
    fileF = wx.grid.Grid(panel)
    fileF.CreateGrid(2,3)
    fileF.SetColLabelSize(0)
    fileF.SetRowLabelSize(0)

    fileF.SetCellValue(0, 0, "Old")
    fileF.SetCellValue(0, 1, "New")
    fileF.SetCellValue(0, 2, "Update?")

    grid.Add(fileF, pos=(5,0))
    # FileGrid end

    runBtn = wx.Button(panel, wx.ID_APPLY, "Apply")
    self.Bind(wx.EVT_BUTTON, self.applyScRen, runBtn)
    grid.Add(runBtn, pos=(6,0))

    self.SetSizerAndFit(grid)

Image of the gui as it is

Upvotes: 0

Views: 1196

Answers (1)

daedalus
daedalus

Reputation: 10923

You do not provide the full frame structure but this should get you on the right track.

Change the last line to:

panel.SetSizerAndFit(grid)

That already improves matters. The container for the sizer is the panel and that, in turn, is contained inside the frame.

EDIT

This pastebin has the full working version. It produces this image followed by the key change I made to your code:

screenshot of wxPython frame

    #panel.CreateStatusBar()
    vSizer.Add(grid, 0, wx.ALL, 5)
    panel.SetSizerAndFit(grid)
    self.CreateStatusBar()
    self.SetInitialSize()
    self.Show(True)

Upvotes: 1

Related Questions