WxPython多个网格实例
有人知道如何在一个帧上显示同一网格的多个实例吗?每当我创建同一对象的多个实例时,原始网格小部件的显示就会完全崩溃,我将无法对其执行任何操作 以下代码供参考:WxPython多个网格实例,wxpython,grid,Wxpython,Grid,有人知道如何在一个帧上显示同一网格的多个实例吗?每当我创建同一对象的多个实例时,原始网格小部件的显示就会完全崩溃,我将无法对其执行任何操作 以下代码供参考: import wx import wx.grid as gridlib class levelGrid(gridlib.Grid): def __init__(self, parent, rows, columns): gridlib.Grid.__init__(self, parent, -1)
import wx
import wx.grid as gridlib
class levelGrid(gridlib.Grid):
def __init__(self, parent, rows, columns):
gridlib.Grid.__init__(self, parent, -1)
self.moveTo = None
self.CreateGrid(rows, columns)
self.SetDefaultColSize(32)
self.SetDefaultRowSize(32)
self.SetColLabelSize(0)
self.SetRowLabelSize(0)
self.SetDefaultCellBackgroundColour(wx.BLACK)
self.EnableDragGridSize(False)
class mainFrame(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(768, 576))
editor = levelGrid(self, 25, 25)
panel1 = wx.Panel(editor, -1)
#vbox = wx.BoxSizer(wx.VERTICAL)
#vbox.Add(editor, 1, wx.EXPAND | wx.ALL, 5)
#selector = levelGrid(self, 1, 25)
#vbox.Add(selector, 1, wx.EXPAND |wx.BOTTOM, 5)
self.Centre()
self.Show(True)
app = wx.App()
mainFrame(None, -1, "SLAE")
app.MainLoop()
您需要将sizer(vbox)添加到面板中,因此您应该这样做
class mainFrame(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(768, 576))
panel = wx.Panel(self, -1)
editor = levelGrid(panel, 15, 25)
selector = levelGrid(panel, 1, 25)
selector.SetDefaultCellBackgroundColour(wx.BLUE)
vbox = wx.BoxSizer(wx.VERTICAL)
vbox.Add(editor, 0, wx.EXPAND | wx.ALL, 5)
vbox.Add(selector, 1, wx.EXPAND |wx.BOTTOM, 5)
panel.SetSizerAndFit(vbox)
self.Centre()
self.Show(True)