wxPython:更改按钮图像
wxPython: Change Button Image
我想在 wxPython 中更改按钮图像。我可以隐藏和删除按钮,但是当我尝试再次将按钮添加到同一位置时,它出现在错误的位置。我错过了什么?
详情:我为 wx.Panel 创建了一个 class。 class 有一个构造函数。 class 有两个按钮。当您按下第一个按钮时,第二个按钮被隐藏,然后从 sizer 中移除。当按下第一个按钮时,调用 "clicked()" 函数。 "clicked()" 函数首先隐藏要移除的按钮,然后将其从sizer 中移除。当 "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()
编辑: 我不得不从原来的代码中删除了很多代码,这样 Whosebug 才能接受我的问题,所以给 Hide() 和 Remove( ) 函数在此示例中可能不正确,但按钮的隐藏和删除在原始代码中没有错误。
无需创建新的小部件,只需调用现有按钮的 SetBitmap
方法即可。
对于那些确实需要新小部件的时候,一定要在之后调用 sizer 的 Layout
方法,以便 sizer 重新布局并将该小部件移动到位。
我想在 wxPython 中更改按钮图像。我可以隐藏和删除按钮,但是当我尝试再次将按钮添加到同一位置时,它出现在错误的位置。我错过了什么?
详情:我为 wx.Panel 创建了一个 class。 class 有一个构造函数。 class 有两个按钮。当您按下第一个按钮时,第二个按钮被隐藏,然后从 sizer 中移除。当按下第一个按钮时,调用 "clicked()" 函数。 "clicked()" 函数首先隐藏要移除的按钮,然后将其从sizer 中移除。当 "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()
编辑: 我不得不从原来的代码中删除了很多代码,这样 Whosebug 才能接受我的问题,所以给 Hide() 和 Remove( ) 函数在此示例中可能不正确,但按钮的隐藏和删除在原始代码中没有错误。
无需创建新的小部件,只需调用现有按钮的 SetBitmap
方法即可。
对于那些确实需要新小部件的时候,一定要在之后调用 sizer 的 Layout
方法,以便 sizer 重新布局并将该小部件移动到位。