我正在尝试为布尔表达式评估的学校项目构建GUI。该程序将一个字符串作为输入A^B
,并在GUI中使用Grid小部件显示它的真值表。
由于某些原因(不想让这个帖子太长)我需要Hide()和Show()一个面板,它有唯一的小部件(网格),但每当我调用Hide()和Show( )面板放在父面板的左上角。
让我澄清使用一些图片:
我要隐藏的面板是禁用的TextCtrl小部件正下方的灰色面板,正如您所看到的,我将其放置在我想要的位置。现在让我们看看hide()和show()
现在面板已移至屏幕的左上角。
这就是我实施小组的方式:
#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()
小组出现在那个角落里。
有关为什么会发生这种情况的任何想法?
我不想用我的代码填写这篇文章,因为它非常庞大,但我很乐意回答有关它的任何问题,我刚发布了那篇文章,因为我认为这是唯一重要的一部分。
答案 0 :(得分:0)
我认为Show()只是隐藏组件可见。假设self.vbox1是midpan的sizer,请尝试手动执行self.vbox1.Layout()
,告诉它手动将所有内容移动到正确的位置。