我将按键摆在布局中并隐藏,希望当触发事件时显示出来。
但触发时间显示时的位置却改变了,请问我应该怎么做?
在隐藏前的位置为右下角,但隐藏再显示出来却到了左上角。
摆入布局的代码
self.EIB_bt = wx.Button(self, -1, "EIB")
sizer.Add(self.EIB_bt, pos=(3, 7), span=(0, 1), flag=wx.EXPAND, border=5)
sizer.Add(wx.StaticText(self,-1,"xxxxxx"), pos=(6, 2), span=(0, 1),flag=wx.EXPAND, border=5)
self.EIB_bt.Hide()
触发事件代码
def chose_report_fun(self, event):
self.bt_Enable_False([self.report_choice,self.select_bt])
# self.update_bt.Enable(False)
# self.delete_bt.Enable(False)
# self.insert_bt.Enable(False)
self.grid.ClearGrid()
# self.grid.Back
self.update_bt.Enable(False)
ch1_value = self.report_choice.GetStringSelection()
print(ch1_value)
if ch1_value in ['sd as aswqd']:
self.EIB_bt.Show()
else:
self.EIB_bt.Hide()
研究了下 EXPAND布局 , 找到解决办法了,供参考
self.EIB_bt.Hide() 不能在init 里执行,要在你的 frame.show() 后执行。 这样就不会错位了。
绝对位置没发现问题。
import wx
class MyButton(wx.Frame):
flag = True
def __init__(self,parent,id,title):
wx.Frame.__init__(self,parent,id,title)
panel=wx.Panel(self,-1,size=(300,250))
self.btn1 = wx.Button(panel,201,u'设置',pos=(80,70))
self.Bind(wx.EVT_BUTTON, self.click1, self.btn1)
self.btn2 = wx.Button(panel, 202, u'设置2', pos=(180, 70))
self.Bind(wx.EVT_BUTTON, self.click2, self.btn2)
self.Centre()
def click1(self,e ):
print("btn1 click!")
if self.flag:
self.btn2.Hide()
self.flag = False
else:
# self.btn2.Disable()
self.btn2.Show()
self.flag = True
def click2(self,e):
print("btn2 click!")
if __name__=='__main__':
app=wx.App()
frame=MyButton(None,-1,u'按钮示例')
frame.Show()
app.MainLoop()
可能 和你的 EXPAND布局有关。 或者不用Hide 和Show ,用 Disable() 和 Enable()