按钮相互重叠

按钮相互重叠

问题描述:

我有以下代码:按钮相互重叠

self.btn1 = wx.Button(self, -1, _("a")) 
    self.btn2 = wx.Button(self, -1, _("b")) 
    btnSizer = wx.BoxSizer(wx.HORIZONTAL) 
    btnSizer.Add(self.btn1 , 0, wx.RIGHT, 10) 
    btnSizer.Add(self.btn2 , 0, wx.RIGHT, 10) 

这种运作良好。 但是存在这样的情况我改变btn2标题的情况下:

self.btn1.SetLabel('bbbbb') 

当我这样做,btn1重叠btn2 ....

第一行是原 第二行是集标签后。

enter image description here

如何使屏幕刷新按钮的新的大小?

+0

你的代码不足以测试这个。你有嵌套sizer或什么东西? – Sevanteri

你可以使用self.Layout(),但在这种情况下,它确实不应该是必要的。您的代码必须存在一些问题。

import wx 

class ButtonFrame(wx.Frame): 
    def __init__(self, value): 
     wx.Frame.__init__(self,None) 
     self.btn1 = wx.Button(self, -1, ("a")) 
     self.btn2 = wx.Button(self, -1, ("b")) 
     self.btnSizer = wx.BoxSizer(wx.HORIZONTAL) 
     self.btnSizer.Add(self.btn1 , 0, wx.RIGHT, 10) 
     self.btnSizer.Add(self.btn2 , 0, wx.RIGHT, 10) 
     self.btn1.Bind(wx.EVT_BUTTON, self.OnPressA) 
     self.btn2.Bind(wx.EVT_BUTTON, self.OnPressB) 
     self.SetSizer(self.btnSizer) 
     self.Centre() 
     self.Show() 

    def OnPressA(self,evt): 
     self.btn1.SetLabel('bbbbbbbbbbbbbbbbbbbbbbbbbb') 
#  self.Layout() 

    def OnPressB(self,evt): 
     self.btn2.SetLabel('aaaaaaaaaaaaaaaaaaaaaaaaaa') 
#  self.Layout() 

if __name__ == "__main__": 
    app = wx.App(False) 
    ButtonFrame(None) 
    app.MainLoop() 
+0

'Update()'只是触发重绘的部件。这种情况下需要的东西就像'self.btnSizer.Layout()' – RobinDunn

+0

@RobinDunn谢谢,相应地进行了调整。尽管如此,我仍然认为OP还有一些其他的问题。 –