我想在wxPython中更改按钮图像。我可以隐藏和删除按钮,但是当我尝试再次将按钮添加到同一位置时,它会显示在错误的位置。我想念什么?
详细信息:我为wx.Panel创建一个类。该类具有构造函数。该班有两个按钮。当您按下第一个按钮时,第二个按钮被隐藏,然后从尺寸调整器中删除。当按下第一个按钮时,将调用“ clicked()”函数。 “ clicked()”函数首先隐藏要删除的按钮,然后将其从大小调整器中删除。当“ clicked()”函数尝试将另一个按钮添加到与第二个按钮相同的位置时,新按钮将出现在用户界面的顶部。
我希望将新按钮放置在与旧按钮相同的位置。我该怎么办?
class Panel(wx.Panel):
def __init__(self, parent):
super(Panel, self).__init__(parent)
self.sizer = wx.GridBagSizer(11, 14)
self.button01 = wx.Button(self, label="01")
self.sizer.Add(self.button01, pos=(2, 0))
self.Bind(wx.EVT_BUTTON, self.clicked, self.button01)
self.pic = wx.Bitmap("light.jpg", wx.BITMAP_TYPE_ANY)
self.buttonpic = wx.BitmapButton(self, -1, self.pic)
self.sizer.Add(self.buttonpic, pos=(3, 1), flag=wx.LEFT, border=10)
self.sizer.AddGrowableCol(2)
self.SetSizer(self.sizer)
self.sizer.Fit(self)
def clicked(self, event):
self.sizer.Hide( 2 )
self.sizer.Remove( 2 )
self.pic = wx.Bitmap("dark.jpg", wx.BITMAP_TYPE_ANY)
self.buttonpic = wx.BitmapButton(self, -1, self.pic)
self.sizer.Add(self.buttonpic, pos=(3, 1), flag=wx.LEFT, border=10)
event.Skip()
Edit:我必须从原始代码中删除很多代码,以便StackOverflow可以接受我的问题,因此在此示例中,给Hide()和Remove()函数提供的整数可能不正确,但是按钮的隐藏和删除操作在原始代码中没有错误。
而不是创建新的小部件,只需调用现有按钮的SetBitmap
方法。
对于那些确实需要新的窗口小部件的时间,请确保以后再调用sizer的Layout
方法,以便sizer将重做布局并将该窗口小部件移到适当位置。