在hide()&之后错过了WxPython小部件节目()

时间:2013-10-20 02:59:44

标签: python user-interface wxpython

我正在尝试为布尔表达式评估的学校项目构建GUI。该程序将一个字符串作为输入A^B,并在GUI中使用Grid小部件显示它的真值表。

由于某些原因(不想让这个帖子太长)我需要Hide()和Show()一个面板,它有唯一的小部件(网格),但每当我调用Hide()和Show( )面板放在父面板的左上角。

让我澄清使用一些图片:Working as it should, panel in place

我要隐藏的面板是禁用的TextCtrl小部件正下方的灰色面板,正如您所看到的,我将其放置在我想要的位置。现在让我们看看hide()和show()

Wrong place

现在面板已移至屏幕的左上角。

这就是我实施小组的方式:

    #Answer box panel
    self.panel_resp = sp.ScrolledPanel(midPan, -1) # midpan is the parent panel (blue)
    self.panel_resp.SetBackgroundColour('#FFFFFFF')
    resp_sizer = wx.BoxSizer(wx.HORIZONTAL)
    self.panel_resp.SetSizer(resp_sizer)
    self.panel_resp.SetAutoLayout(1)
    self.panel_resp.SetupScrolling()
    self.vbox1.Add(self.panel_resp, flag=wx.EXPAND|wx.ALL,
                   border=10)
    self.vbox1.Add((-1,10))

    self.panel_resp.Hide()

现在,每当我点击“评估”按钮时,我都会发出以下声明:

self.panel_resp.Show()

小组出现在那个角落里。

有关为什么会发生这种情况的任何想法?

我不想用我的代码填写这篇文章,因为它非常庞大,但我很乐意回答有关它的任何问题,我刚发布了那篇文章,因为我认为这是唯一重要的一部分。

1 个答案:

答案 0 :(得分:0)

我认为Show()只是隐藏组件可见。假设self.vbox1是midpan的sizer,请尝试手动执行self.vbox1.Layout(),告诉它手动将所有内容移动到正确的位置。