Я хочу скрыть виджет в sizer и не оставить пустое пространство. Я не хочу удалять виджет, потому что я хочу показать его позже.wxPython: скрыть виджет и удалить оставшееся пространство
Есть ли способ скрыть виджет и отобразить виджеты после того, как он переместится на одно место, чтобы заполнить пустое место?
Вот простой пример пространства остаться:
import wx
class MyPanel(wx.Panel):
def __init__(self, parent):
"""Constructor"""
wx.Panel.__init__(self, parent)
sizer = wx.GridSizer(1, 3, 0, 0)
a = wx.Button(self, -1, 'a')
b = wx.Button(self, -1, 'b')
c = wx.Button(self, -1, 'c')
sizer.Add(a, 0, 0, 0)
sizer.Add(b, 0, 0, 0)
sizer.Add(c, 0, 0, 0)
b.Hide()
self.SetSizer(sizer)
class MyFrame(wx.Frame):
def __init__(self):
"""Constructor"""
wx.Frame.__init__(self, parent=None, title="Remove Spaces")
panel = MyPanel(self)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(panel, 1, wx.EXPAND)
self.SetSizer(sizer)
self.Fit()
self.Show()
if __name__ == "__main__":
app = wx.App(False)
frame = MyFrame()
app.MainLoop()
Ваш пример не удалить пустое пространство, но, насколько я могу видеть, что это будет работать только для мешка Sizer. Есть ли способ удалить пустые пространства * независимо * от типа sizer (сетка sizer, flex grid sizer, bag sizer и т. Д.)? – Kade
Насколько я знаю, 'GridSizer' довольно статичен. Вам нужно будет прочитать последнюю кнопку для sizer во второй позиции. –
Как насчет 'FlexGridSizer'? – Kade