Как переопределить wx.GridSizer? - PullRequest
       12

Как переопределить wx.GridSizer?

0 голосов
/ 24 февраля 2010

У меня есть этот код:

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, чтобы иметь на одну строку меньше, и удалить закрытую панель.

Итак, когда я нажимаю на close, я вызываю redefineSizer, чтобы удалить эту панель и обновить себя. Вот что я хочу сделать!

Заранее спасибо:)

1 Ответ

1 голос
/ 24 февраля 2010

Если вы используете что-то вроде AUI framework , вы можете просто создать новый размер сетки и заменить тот, который у вас уже есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...