python - How to center a wx.Grid in wxPython -
i trying center wx.grid.grid in wxpython. have tried every possible combination of id parameter 1,0,-1. have tried add wx.align_center_horizontal many sizers. have been working on few days now, appreciated.
my question is: "how center wxgrid?"
here code:
main.py
import wx logview import logview class myframe(wx.frame): """ derive new class of frame. """ def __init__(self, parent, id, title): wx.frame.__init__(self, parent, id, title=title, size=(850,725)) self.main = wx.panel(self) self.nb = wx.notebook(self.main, 1) self.logview = logview(parent=self.nb, id=-1) self.mainsizer = wx.boxsizer(wx.vertical) self.nb.addpage(self.logview, "log") # create sizers self.mainsizer = wx.boxsizer(wx.vertical) # adding objects mainsizer self.mainsizer.addspacer(10) self.mainsizer.add(self.nb, 1, wx.all|wx.expand) # set main sizer self.main.setautolayout(true) self.main.setsizer(self.mainsizer) self.mainsizer.fit(self.main) self.layout() self.centre(wx.both) self.show() app = wx.app(false) frame = myframe(none, -1, 'tfm ui') app.mainloop() logview.py
import wx gridtable import gridtable class logview(wx.panel): def __init__(self, parent, id): wx.panel.__init__(self, parent, id) self.sizer = wx.boxsizer(wx.vertical) self.gridpnl = wx.panel(self) self.gridpnlsizer = wx.boxsizer(wx.vertical) self.grid = gridtable(self.gridpnl) self.gridpnlsizer.addstretchspacer() self.gridpnlsizer.add(self.grid,-1,wx.expand|wx.align_center_horizontal) self.gridpnlsizer.addstretchspacer() self.gridpnl.setautolayout(true) self.gridpnl.setsizer(self.gridpnlsizer) self.gridpnlsizer.fit(self.gridpnl) self.sizer.addspacer(25) self.sizer.add(self.gridpnl,-1,wx.expand) self.setautolayout(true) self.setsizer(self.sizer) self.sizer.fit(self) gridtable.py
import wx import wx.grid class gridtable(wx.grid.grid): def __init__(self, parent): #coldisplay should list wx.grid.grid.__init__(self, parent) self.creategrid(100,3) in xrange(3): if i==0: self.setcollabelvalue(i, "col"+str(i)) self.setcolsize(i,85) else: self.setcollabelvalue(i, "col"+str(i)) self.setcolsize(i,150) in xrange(100): #clear grid self.setrowlabelvalue(i, str(i+1)) j in xrange(3): self.setcellvalue(i,j,"") if i==0: self.setcellbackgroundcolour(i, j, wx.light_grey) elif i%2==0: self.setcellbackgroundcolour(i, j, wx.light_grey) else: self.setcelltextcolour(i, j, wx.black) self.setcellbackgroundcolour(i, j, wx.white) in xrange(100): if i==0: j in xrange(3): if j == 0: self.setrowlabelvalue(i, str(i+1)) self.setcellvalue(i,j,str("col"+str(j))) self.setcellbackgroundcolour(i, j, wx.light_grey) else: self.setcellvalue(i,j,str("col"+str(j))) self.setcellbackgroundcolour(i, j, wx.light_grey) elif i%2==0: j in xrange(3): if j == 0: self.setrowlabelvalue(i, str(i+1)) self.setcellvalue(i,j,str("col"+str(j))) self.setcellbackgroundcolour(i, j, wx.light_grey) else: self.setcellvalue(i,j,str("col"+str(j))) self.setcellbackgroundcolour(i, j, wx.light_grey) else: j in xrange(3): if j == 0: self.setrowlabelvalue(i, str(i+1)) self.setcellvalue(i,j,str("col"+str(j))) self.setcelltextcolour(i, j, wx.black) self.setcellbackgroundcolour(i, j, wx.white) else: self.setcellvalue(i,j,str("col"+str(j))) self.setcelltextcolour(i, j, wx.black) self.setcellbackgroundcolour(i, j, wx.white)
looking @ line logview.py:
self.gridpnlsizer.add(self.grid,-1,wx.expand|wx.align_center_horizontal) for starters, you're using proportion of -1, think undefined. causes python crash on machine, so... that's not great. default 0.
second, you're telling sizer expand widget. guess if widget takes available space, it's centered 1 definition, don't think that's mean.
finally, stretch spacers unnecessary. replace block of 3 lines with:
self.gridpnlsizer.add(self.grid,flag=wx.align_center_horizontal) when that, end with:

Comments
Post a Comment