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)添加到面板中,因此您应该这样做

  • 在框架内创建一个面板
  • 创建2层网格作为面板的子级
  • 将levelGrids添加到vbox sizer
  • 将sizer添加到面板
  • e、 g

    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)