我正在尝试为布尔表达式评估的学校项目构建一个 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()
面板出现在那个角落。
知道为什么会这样吗?
我不想用我的代码填写这篇文章,因为它非常庞大,但我很乐意回答有关它的任何问题,我只是发布了那部分,因为我认为这是唯一重要的部分。