gpt4 book ai didi

python - wxPython:隐藏小部件并删除剩余空间

转载 作者:行者123 更新时间:2023-12-01 03:17:08 25 4
gpt4 key购买 nike

我想在 sizer 中隐藏一个小部件而不留下空白空间。我不想删除该小部件,因为我想稍后再次显示它。

有没有办法隐藏小部件并在其移动一个空间以填充空白位置后显示小部件?

这是一个留下空格的简单示例:

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()

最佳答案

你必须使用wx.GridSizer吗?因为它会给你一个固定布局,所以即使你隐藏一个控件,网格仍然会显示该空间。

您是否考虑过使用wx.GridBagSizer ?试试这个:

class MyPanel(wx.Panel):
def __init__(self, parent):
"""Constructor"""
wx.Panel.__init__(self, parent)
self.parent = parent

self.sizer = wx.GridBagSizer()

self.a = wx.Button(self, -1, 'a')
self.b = wx.Button(self, -1, 'b')
self.c = wx.Button(self, -1, 'c')
self.a.Bind(wx.EVT_BUTTON, self.button_clicked)

self.sizer.Add(self.a, pos=(0, 0))
self.sizer.Add(self.b, pos=(0, 1))
self.sizer.Add(self.c, pos=(0, 2))

self.SetSizer(self.sizer)

def button_clicked(self, event):
if self.b.IsShown():
self.b.Hide()
else:
self.b.Show()
self.parent.Fit()

使用FlexGridSizer:

class MyPanel(wx.Panel):
def __init__(self, parent):
"""Constructor"""
wx.Panel.__init__(self, parent)
self.parent = parent

self.sizer = wx.FlexGridSizer(1, 3, 0, 0)

self.a = wx.Button(self, -1, 'a')
self.b = wx.Button(self, -1, 'b')
self.c = wx.Button(self, -1, 'c')
self.a.Bind(wx.EVT_BUTTON, self.button_clicked)

self.sizer.Add(self.a)
self.sizer.Add(self.b)
self.sizer.Add(self.c)

self.SetSizer(self.sizer)

def button_clicked(self, event):
if self.b.IsShown():
self.b.Hide()
else:
self.b.Show()
self.parent.Fit()

关于python - wxPython:隐藏小部件并删除剩余空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42370928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com