【问题标题】:How can I resize a staticText to occupy space used by a hidden staticText item in wxPython?如何调整 staticText 的大小以占用 wxPython 中隐藏的 staticText 项使用的空间?
【发布时间】:2020-06-10 17:10:34
【问题描述】:

我有一个 wxPython GUI 布局,我希望它是用户可配置的。最简单的例子是这样的:

+++++++++++++++++
+ Text1 + Text2 +
+++++++++++++++++

然后我想添加一个按钮,它将隐藏“Text2”并允许“Text1”超越该空间,在该空间中水平居中,如下所示:

+++++++++++++++++
+     Text1     +
+++++++++++++++++

我已经尝试过使用 GridBagSizers 进行各种操作,并将这些文本控件定位在各种其他水平和垂直 boxsizers 中,但我似乎无法弄清楚如何实现这一点。我当然可以隐藏“Text2”,但它保留了为它保留的空间,这意味着“Text1”仍然占据左侧的空间并且不在整个空间中水平居中。

有什么想法吗?

【问题讨论】:

  • 为格式混乱道歉。我对预览的关注不够。

标签: python wxpython


【解决方案1】:

关键是Layout() 命令,以确保sizer 重新计算自己和他们的孩子。
这是一个切换文本的示例:

import wx

class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY, "Show/Hide", size=(300,150))

        self.t1 = wx.StaticText(self, -1, ' Text1 ')
        self.t2 = wx.StaticText(self, -1, '  ')
        self.t3 = wx.StaticText(self, -1, ' Text2 ')
        b1 = wx.Button(self, -1, 'Adjust Sizer')

        self.vsizer = wx.BoxSizer(wx.VERTICAL)
        self.hsizer = wx.BoxSizer(wx.HORIZONTAL)
        self.vsizer.Add(wx.StaticText(self, -1, '****************************'), 0, wx.ALIGN_CENTRE_HORIZONTAL, 0)
        self.hsizer.Add(self.t1, 1, 0, 0)
        self.hsizer.Add(self.t2, 0, 0, 0)
        self.hsizer.Add(self.t3, 1, 0, 0)
        self.vsizer.Add(self.hsizer,0,wx.ALIGN_CENTRE_HORIZONTAL)
        self.vsizer.Add(wx.StaticText(self, -1, '****************************'), 0, wx.ALIGN_CENTRE_HORIZONTAL, 0)
        self.vsizer.Add(b1, 0, 0, 0)
        self.Bind(wx.EVT_BUTTON, self.OnAssign)
        self.SetSizer(self.vsizer)
        self.Show()

    def OnAssign(self, event):
        if self.t2.IsShown():
            self.t2.Hide()
            self.t3.Hide()
        else:
            self.t2.Show()
            self.t3.Show()
        self.Layout()

if __name__ == "__main__":
    app = wx.App()
    frame = MyFrame()
    app.MainLoop()

如果您还想在其中添加额外的 * 字符,您可能需要发挥创造力。

【讨论】:

  • 完美!非常感谢。我知道这会很简单。我没有意识到 Layout() 函数会强制重绘。
猜你喜欢
  • 2010-09-22
  • 1970-01-01
  • 2011-07-09
  • 2011-06-03
  • 2011-03-21
  • 1970-01-01
  • 1970-01-01
  • 2020-09-07
  • 2011-10-08
相关资源
最近更新 更多