如何重新定义wx.GridSizer?

时间:2010-02-24 09:51:34

标签: python wxpython

我有这段代码:

class SoundLog(wx.Frame):
    def __init__(self, *args, **kwargs):
        wx.Frame.__init__(self, size=(500, 350), *args, **kwargs)
        self.SetBackgroundColour((110,110,110))
        self.sizer = wx.BoxSizer(wx.VERTICAL)

        pluginsNumber = len(plugins) - len(pluginsToHide)

        self.gs = wx.GridSizer(pluginsNumber, 1, 0, 0)
        pluginsList = self.getPluginsList()
        self.gs.AddMany(pluginsList)
        self.sizer.Add(self.gs, 1, wx.EXPAND)
        self.SetSizer(self.sizer)
        self.Centre()
        self.Show(True)

如何制作重新定义此处定义的GridSizer的函数?

是这样的:

def redefineSizer(self):
    self.Show(False)
    pluginsNumber = len(plugins) - len(pluginsToHide)
    self.gs.Clear()
    self.sizer.Remove(self.gs)
    self.gs = wx.GridSizer(pluginsNumber, 1, 0, 0)
    print self.gs
    pluginsList = self.getPluginsList()
    self.gs.AddMany(pluginsList)
    self.sizer.Add(self.gs, 1, wx.EXPAND)
    self.SetSizer(self.sizer)
    self.Centre()
    self.Show(True)

或类似的东西:

def redefineSizer(self):
     pluginsNumber = len(plugins) - len(pluginsToHide)
     self.gs.SetRows(pluginsNumber)
     self.gs.Clear(deleteWindows=False)
     pluginsList = self.getPluginsList()
     self.gs.AddMany(pluginsList)
     self.SetSizer(self.sizer)

但我知道(因为它不起作用)我错过了一些东西。 它是什么?

我将面板放在GridSizer中,但可以选择关闭它们。 当我关闭一个面板时,我想重新定义GridSizer以减少一行并删除关闭的面板。

因此,当我点击关闭时,我会调用redefineSizer删除该面板并自行更新。 这就是我想做的事情!

提前致谢:)

1 个答案:

答案 0 :(得分:1)

如果您使用AUI framework之类的东西,您只需创建一个新的网格大小调整器,然后换掉您已经拥有的网格大小调整器。