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:

enter image description here


Comments

Popular posts from this blog

node.js - Using Node without global install -

How to access a php class file from PHPFox framework into javascript code written in simple HTML file? -

java - Null response to php query in android, even though php works properly -